|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.mmtk.plan.TransitiveClosure org.mmtk.utility.deque.ObjectReferenceBuffer
public abstract class ObjectReferenceBuffer
This class is a combination of a Deque and a TraceStep, designed to include intelligent processing of child references as objects are scanned.
TransitiveClosure
Field Summary | |
---|---|
private ObjectReferenceDeque |
values
|
Fields inherited from class org.mmtk.plan.TransitiveClosure |
---|
specializedScan |
Constructor Summary | |
---|---|
ObjectReferenceBuffer(String name,
SharedDeque queue)
Constructor |
Method Summary | |
---|---|
void |
flushLocal()
Flushes all local state back to the shared queue. |
boolean |
isEmpty()
|
boolean |
isFlushed()
Return true if this buffer is locally empty |
ObjectReference |
pop()
Retrieves an object. |
protected abstract void |
process(ObjectReference object)
This is the method that ensures |
void |
processChildren(ObjectReference object)
Process each of the child objects for the passed object. |
void |
processEdge(ObjectReference source,
Address slot)
Trace an edge during GC. |
void |
push(ObjectReference object)
Pushes an object onto the queue, forcing an inlined sequence. |
void |
pushOOL(ObjectReference object)
Pushes an object onto the queue, forcing an out of line sequence. |
Methods inherited from class org.mmtk.plan.TransitiveClosure |
---|
getSpecializedScanClass, processNode, registerSpecializedScan |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
private final ObjectReferenceDeque values
Constructor Detail |
---|
public ObjectReferenceBuffer(String name, SharedDeque queue)
name
- The name of the underlying deque.queue
- The shared deque that is used.Method Detail |
---|
public final void processEdge(ObjectReference source, Address slot)
TransitiveClosure
processEdge
in class TransitiveClosure
source
- The source of the reference.slot
- The location containing the object reference.protected abstract void process(ObjectReference object)
object
- The object to process.public final void processChildren(ObjectReference object)
object
- The object to process the children of.public final void push(ObjectReference object)
object
- The object to push.public final void pushOOL(ObjectReference object)
object
- The object to push.public final ObjectReference pop()
public final boolean isEmpty()
public final void flushLocal()
public final boolean isFlushed()
true
if this buffer is locally empty
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |