|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.mmtk.utility.deque.Deque
org.mmtk.utility.deque.LocalSSB
org.mmtk.utility.deque.LocalQueue
org.mmtk.utility.deque.LocalDeque
public class LocalDeque
Note this may perform poorly when being used as a FIFO structure with
insertHead and pop operations operating on the same buffer. This
only uses the fields inherited from LocalQueue, but adds
the ability for entries to be added to the head of the deque and popped
from the rear.
| 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 |
| Constructor Summary | |
|---|---|
LocalDeque(SharedDeque queue)
Constructor |
|
| Method Summary | |
|---|---|
protected void |
checkHeadInsert(int arity)
Check whether there is space in the buffer for a pending insert. |
private void |
closeAndInsertHead(int arity)
Close the head buffer and enqueue it at the front of the shared buffer deque. |
void |
flushLocal()
Flush the buffer to the shared deque (this will make any entries in the buffer visible to any other consumer associated with the shared deque). |
private void |
headOverflow(int arity)
Buffer space has been exhausted, allocate a new buffer and enqueue the existing buffer (if any). |
private boolean |
tailStarved(int arity)
The tail is empty (or null), and the shared deque has no buffers available. |
protected void |
uncheckedHeadInsert(Address value)
Insert a value at the front of the deque (and buffer). |
| 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 |
|---|
LocalDeque(SharedDeque queue)
queue - The shared deque to which this local deque will append
its buffers (when full or flushed).| Method Detail |
|---|
public final void flushLocal()
flushLocal in class LocalSSBprotected final void checkHeadInsert(int arity)
arity - The arity of the values stored in this deque: the
buffer must contain enough space for this many words.protected final void uncheckedHeadInsert(Address value)
checkHeadInsert() to ensure the buffer can accommodate
the insertion.
value - the value to be inserted.private void headOverflow(int arity)
arity - The arity of this buffer (used for sanity test only).private void closeAndInsertHead(int arity)
arity - The arity of this buffer.private boolean tailStarved(int arity)
arity - The arity of this buffer
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||