org.mmtk.utility.deque
Class AddressDeque

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

public class AddressDeque
extends LocalDeque
implements Constants

This supports unsynchronized enqueuing and dequeuing of addresses


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
AddressDeque(String n, SharedDeque queue)
          Constructor
 
Method Summary
 void insert(Address addr)
          Insert an address into the address queue.
 void insertOOL(Address addr)
          Insert an address into the address queue, force this out of line ("OOL"), in some circumstances it is too expensive to have the insert inlined, so this call is made.
 boolean isEmpty()
           
 boolean isNonEmpty()
           
 Address pop()
          Pop an address from the address queue, return zero if the queue is empty.
 void push(Address addr)
          Push an address onto the address queue.
 void pushOOL(Address addr)
          Push an address onto the address 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

AddressDeque

public AddressDeque(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(Address addr)
Insert an address into the address queue.

Parameters:
addr - the address to be inserted into the address queue

insertOOL

public final void insertOOL(Address addr)
Insert an address into the address queue, force this out of line ("OOL"), in some circumstances it is too expensive to have the insert inlined, so this call is made.

Parameters:
addr - the address to be inserted into the address queue

push

public final void push(Address addr)
Push an address onto the address queue.

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

pushOOL

public final void pushOOL(Address addr)
Push an address onto the address 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:
addr - the address to be pushed onto the address queue

pop

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

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

isEmpty

public final boolean isEmpty()

isNonEmpty

public final boolean isNonEmpty()