org.mmtk.utility.deque
Class SortTODAddressStack

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

public class SortTODAddressStack
extends LocalDeque
implements Constants

This supports unsynchronized pushing and popping of addresses. 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
SortTODAddressStack(SortTODSharedDeque queue)
          Constructor
 
Method Summary
 boolean isEmpty()
          Check if the (local and shared) stacks are empty.
 Address pop()
          Pop an address from the address stack, return zero if the stack is empty.
 void push(Address addr)
          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

SortTODAddressStack

public SortTODAddressStack(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(Address addr)
Push an address onto the address stack.

Parameters:
addr - the address to be pushed onto the address queue

pop

public final Address 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.