org.mmtk.utility.deque
Class SortTODObjectReferenceStack

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.SortTODObjectReferenceStack
All Implemented Interfaces:
Constants

public class SortTODObjectReferenceStack
extends LocalDeque
implements Constants

This supports unsynchronized pushing and popping of object references. In addition, this can sort the entries currently on the shared stack.


Field Summary
 
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
SortTODObjectReferenceStack(SortTODSharedDeque queue)
          Constructor
 
Method Summary
 boolean isEmpty()
          Check if the (local and shared) stacks are empty.
 ObjectReference pop()
          Pop an address from the address stack, return zero if the stack is empty.
 void push(ObjectReference object)
          Push an address onto the address stack.
 void sort()
          Sort the address on the shared stack.
 
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
 

Constructor Detail

SortTODObjectReferenceStack

public SortTODObjectReferenceStack(SortTODSharedDeque queue)
Constructor

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

sort

public final void sort()
Sort the address on the shared stack.


push

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

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

pop

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

Returns:
The next address in the address stack, or zero if the stack is empty

isEmpty

public final boolean isEmpty()
Check if the (local and shared) stacks are empty.

Returns:
True if there are no more entries on the local & shared stack, false otherwise.