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, registerSpecializedScan
private 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)
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