org.mmtk.utility.deque
Class AddressTripleDeque

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

public class AddressTripleDeque
extends LocalDeque
implements Constants

This supports unsynchronized enqueuing and dequeuing of address triples


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
AddressTripleDeque(SharedDeque queue)
          Constructor
 
Method Summary
 void insert(Address addr1, Address addr2, Address addr3)
          Insert an address triple into the address queue.
 Address pop1()
          Pop the first address in a triple from the address queue, return zero if the queue is empty.
 Address pop2()
          Pop the second address in a triple from the address queue.
 Address pop3()
          Pop the third address in a triple from the address queue.
 void push(Address addr1, Address addr2, Address addr3)
          Push an address pair onto the address queue.
 
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

AddressTripleDeque

AddressTripleDeque(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 acquire new buffers when it has exhausted its own.
Method Detail

insert

public final void insert(Address addr1,
                         Address addr2,
                         Address addr3)
Insert an address triple into the address queue.

Parameters:
addr1 - the first address to be inserted into the address queue
addr2 - the second address to be inserted into the address queue
addr3 - the third address to be inserted into the address queue

push

public final void push(Address addr1,
                       Address addr2,
                       Address addr3)
Push an address pair onto the address queue.

Parameters:
addr1 - the first value to be pushed onto the address queue
addr2 - the second value to be pushed onto the address queue
addr3 - the third address to be pushed onto the address queue

pop1

public final Address pop1()
Pop the first address in a triple 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

pop2

public final Address pop2()
Pop the second address in a triple from the address queue.

Returns:
The next address in the address queue

pop3

public final Address pop3()
Pop the third address in a triple from the address queue.

Returns:
The next address in the address queue