org.mmtk.utility.deque
Class ObjectReferenceDeque

java.lang.Object
  extended by org.mmtk.utility.deque.Deque
      extended by org.mmtk.utility.deque.LocalSSB
          extended by org.mmtk.utility.deque.LocalQueue
              extended by org.mmtk.utility.deque.LocalDeque
                  extended by org.mmtk.utility.deque.ObjectReferenceDeque
All Implemented Interfaces:
Constants

public class ObjectReferenceDeque
extends LocalDeque
implements Constants

This supports unsynchronized enqueuing and dequeuing of object references


Field Summary
 String name
           
 
Fields inherited from class org.mmtk.utility.deque.LocalQueue
head
 
Fields inherited from class org.mmtk.utility.deque.LocalSSB
queue, tail, tailBufferEnd
 
Fields inherited from class org.mmtk.utility.deque.Deque
BUFFER_MASK, BUFFER_SIZE, HEAD_INITIAL_VALUE, LOG_PAGES_PER_BUFFER, META_DATA_SIZE, NEXT_FIELD_OFFSET, PAGES_PER_BUFFER, TAIL_INITIAL_VALUE, USABLE_BUFFER_BYTES
 
Fields inherited from interface org.mmtk.utility.Constants
ALIGNMENT_VALUE, ARRAY_ELEMENT, BITS_IN_ADDRESS, BITS_IN_BYTE, BITS_IN_CHAR, BITS_IN_INT, BITS_IN_PAGE, BITS_IN_SHORT, BITS_IN_WORD, BYTES_IN_ADDRESS, BYTES_IN_BYTE, BYTES_IN_CHAR, BYTES_IN_INT, BYTES_IN_KBYTE, BYTES_IN_MBYTE, BYTES_IN_PAGE, BYTES_IN_SHORT, BYTES_IN_WORD, CARD_MASK, CARD_META_PAGES_PER_REGION, INSTANCE_FIELD, LOG_BITS_IN_ADDRESS, LOG_BITS_IN_BYTE, LOG_BITS_IN_CHAR, LOG_BITS_IN_INT, LOG_BITS_IN_PAGE, LOG_BITS_IN_SHORT, LOG_BITS_IN_WORD, LOG_BYTES_IN_ADDRESS, LOG_BYTES_IN_ADDRESS_SPACE, LOG_BYTES_IN_BYTE, LOG_BYTES_IN_CHAR, LOG_BYTES_IN_INT, LOG_BYTES_IN_KBYTE, LOG_BYTES_IN_MBYTE, LOG_BYTES_IN_PAGE, LOG_BYTES_IN_SHORT, LOG_BYTES_IN_WORD, LOG_CARD_BYTES, LOG_CARD_GRAIN, LOG_CARD_META_BYTES, LOG_CARD_META_PAGES, LOG_CARD_META_SIZE, LOG_CARD_UNITS, LOG_MIN_ALIGNMENT, MAX_ALIGNMENT, MAX_BYTES_PADDING, MAX_INT, MIN_ALIGNMENT, MIN_INT, SUPPORT_CARD_SCANNING
 
Constructor Summary
ObjectReferenceDeque(String n, SharedDeque queue)
          Constructor
 
Method Summary
 void insert(ObjectReference object)
          Insert an object into the object queue.
 boolean isEmpty()
           
 boolean isNonEmpty()
           
 ObjectReference pop()
          Pop an object from the object queue, return zero if the queue is empty.
 void push(ObjectReference object)
          Push an object onto the object queue.
 void pushOOL(ObjectReference object)
          Push an object onto the object queue, force this out of line ("OOL"), in some circumstances it is too expensive to have the push inlined, so this call is made.
 
Methods inherited from class org.mmtk.utility.deque.LocalDeque
checkHeadInsert, flushLocal, uncheckedHeadInsert
 
Methods inherited from class org.mmtk.utility.deque.LocalQueue
checkDequeue, headStarved, resetLocal, uncheckedDequeue
 
Methods inherited from class org.mmtk.utility.deque.LocalSSB
bufferSentinel, checkTailInsert, isFlushed, normalizeTail, reset, uncheckedTailInsert
 
Methods inherited from class org.mmtk.utility.deque.Deque
bufferEnd, bufferFirst, bufferLast, bufferLast, bufferLastOffset, bufferOffset, bufferStart
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

name

public final String name
Constructor Detail

ObjectReferenceDeque

public ObjectReferenceDeque(String n,
                            SharedDeque queue)
Constructor

Parameters:
queue - The shared queue to which this queue will append its buffers (when full or flushed) and from which it will aquire new buffers when it has exhausted its own.
Method Detail

insert

public final void insert(ObjectReference object)
Insert an object into the object queue.

Parameters:
object - the object to be inserted into the object queue

push

public final void push(ObjectReference object)
Push an object onto the object queue.

Parameters:
object - the object to be pushed onto the object queue

pushOOL

public final void pushOOL(ObjectReference object)
Push an object onto the object queue, force this out of line ("OOL"), in some circumstances it is too expensive to have the push inlined, so this call is made.

Parameters:
object - the object to be pushed onto the object queue

pop

public final ObjectReference pop()
Pop an object from the object queue, return zero if the queue is empty.

Returns:
The next object in the object queue, or zero if the queue is empty

isEmpty

public final boolean isEmpty()

isNonEmpty

public final boolean isNonEmpty()