public abstract class ObjectReferenceBuffer extends TransitiveClosure
TransitiveClosure| Modifier and Type | Field and Description |
|---|---|
private ObjectReferenceDeque |
values |
specializedScan| Constructor and Description |
|---|
ObjectReferenceBuffer(String name,
SharedDeque queue)
Constructor
|
| Modifier and Type | Method and Description |
|---|---|
void |
flushLocal()
Flushes all local state back to the shared queue.
|
boolean |
isEmpty() |
boolean |
isFlushed() |
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.
|
getSpecializedScanClass, processNode, registerSpecializedScanprivate final ObjectReferenceDeque values
public ObjectReferenceBuffer(String name, SharedDeque queue)
name - The name of the underlying deque.queue - The shared deque that is used.public final void processEdge(ObjectReference source, Address slot)
TransitiveClosureprocessEdge in class TransitiveClosuresource - 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