org.jikesrvm.adaptive
Class OSROrganizerThread

java.lang.Object
  extended by org.mmtk.plan.MutatorContext
      extended by org.mmtk.plan.SimpleMutator
          extended by org.mmtk.plan.StopTheWorldMutator
              extended by org.mmtk.plan.generational.GenMutator
                  extended by org.mmtk.plan.generational.immix.GenImmixMutator
                      extended by org.jikesrvm.mm.mminterface.Selected.Mutator
                          extended by org.jikesrvm.mm.mminterface.ThreadContext
                              extended by org.jikesrvm.scheduler.RVMThread
                                  extended by org.jikesrvm.adaptive.OSROrganizerThread
All Implemented Interfaces:
Constants

public final class OSROrganizerThread
extends RVMThread

Organizer thread collects OSR requests and inserted in controller queue The producers are application threads, and the consumer thread is the organizer. The buffer is RVMThread.threads array. The producer set it is own flag "requesting_osr" and notify the consumer. The consumer scans the threads array and collect requests.


Nested Class Summary
 
Nested classes/interfaces inherited from class org.jikesrvm.scheduler.RVMThread
RVMThread.BlockAdapter, RVMThread.GCBlockAdapter, RVMThread.HandshakeBlockAdapter, RVMThread.HardHandshakeVisitor, RVMThread.SoftHandshakeVisitor, RVMThread.SuspendBlockAdapter, RVMThread.Waiting
 
Field Summary
 boolean osr_flag
           
 
Fields inherited from class org.jikesrvm.scheduler.RVMThread
acctLock, activeMutatorContext, allButGC, ALWAYS_LOCK_ON_STATE_TRANSITION, asyncDebugRequestedForThisThread, BACKEDGE, barriersEntered, barriersExited, BLOCKED_IN_JNI, BLOCKED_IN_NATIVE, bootThread, bridgeInstructions, cachedFreeLock, codePatchSyncRequested, contextRegisters, contextRegistersSave, countdownCBSCall, countdownCBSMethod, daemon, debugLock, debugRequested, debugThreads, doProfileReport, dumpLock, dumpStackOnBlock, EPILOGUE, exitInProgress, feedlet, firstCBSCallSample, firstCBSMethodSample, flushRequested, fooFPOffset, gcBlockAdapter, handshakeBlockAdapter, handshakeLock, handshakeThreads, IN_JAVA, IN_JAVA_TO_BLOCK, IN_JNI, IN_NATIVE, inDumpStack, isWaitingForOsr, jniEnv, LAST_EXEC_STATUS, lockingId, LOG_MAX_THREADS, MAX_THREADS, NATIVE_EPILOGUE, NATIVE_PROLOGUE, NEW, nextSlot, numCBSCallSamples, numCBSMethodSamples, numProcessors, numThreads, onStackReplacementEvent, osr_done, OSROPT, PRIMORDIAL_THREAD_INDEX, PROLOGUE, pthread_id, requesting_osr, softHandshakeDataLock, softHandshakeLeft, softHandshakeRequested, stackLimit, suspendBlockAdapter, takeYieldpoint, TERMINATED, thread_cbs_counter, threadBySlot, threadingInitialized, threads, threadSlot, timerTicks, timeSliceExpired, trace, traceAboutToTerminate, traceAcct, traceBind, traceBlock, traceDetails, traceReallyBlock, tsFPOffset, waitCount, waiting, waitObject, yieldForCBSCall, yieldForCBSMethod, yieldToOSRRequested
 
Fields inherited from class org.jikesrvm.mm.mminterface.ThreadContext
collectorContext
 
Fields inherited from class org.mmtk.plan.generational.GenMutator
arrayRemset, nursery, remset
 
Fields inherited from class org.mmtk.plan.MutatorContext
immortal, lgcode, log, los, nonmove, smcode
 
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
OSROrganizerThread()
          Constructor
 
Method Summary
 void activate()
          Activates organizer thread if it is waiting.
private  void processOsrRequest()
           
 void run()
          Method to be executed when this thread starts running.
 
Methods inherited from class org.jikesrvm.scheduler.RVMThread
assertAcceptableStates, assertAcceptableStates, assertUnacceptableStates, assertUnacceptableStates, asyncBlock, attemptLeaveNativeNoBlock, beginPairHandshake, beginPairWith, beginPairWithCurrent, block, blockedFor, boot, checkDebugRequest, clearDisallowAllocationsByThisThread, clearEmergencyAllocation, clearInterrupted, clearOutOfMemoryError, clearPhysicalAllocationFailed, communicationLock, communicationLockForSlot, countStackFrames, disableYieldpoints, dump, dump, dump, dump, dumpAcct, dumpAll, dumpStack, dumpStack, dumpStack, dumpStackAndDie, dumpVirtualMachine, dumpWithPadding, emergencyAllocation, enableYieldpoints, endPairHandshake, endPairWith, endPairWithCurrent, enterJNIBlockedFromCallIntoNative, enterJNIBlockedFromJNIFunctionCall, enterJNIFromCallIntoNative, enterJNIFromJNIFunctionCall, enterNative, extDump, failIfYieldpointsDisabled, fixupMovedStack, gcEnabled, getCollectionAttempt, getContextRegisters, getCurrentFeedlet, getCurrentThread, getCurrentThreadSlot, getDisableGCDepth, getDisallowAllocationsByThisThread, getExceptionRegisters, getExecStatus, getIsAboutToTerminate, getJavaLangThread, getJNIEnv, getLockingId, getName, getOutOfMemoryError, getPriority, getStack, getStackLength, getState, getThreadForStackTrace, getThreadSlot, handleUncaughtException, hardHandshakeResume, hardHandshakeResume, hardHandshakeSuspend, hardHandshakeSuspend, hasNativeStackFrame, holdsLock, ignoreHandshakesAndGC, init, initializeJNIEnv, interrupt, isAlive, isBlocked, isBootThread, isDaemonThread, isGCThread, isInJava, isInterrupted, isSystemThread, join, leaveJNIBlockedFromCallIntoNative, leaveJNIFromCallIntoNative, leaveJNIFromJNIFunctionCall, leaveNative, makeDaemon, monitor, notify, notifyAll, notRunning, observeExecStatusAtSTW, park, physicalAllocationFailed, processAboutToTerminate, raiseIllegalMonitorStateException, reportCollectionAttempt, reportThreadTransitionCounts, resetCollectionAttempts, resizeCurrentStack, resume, safeAsyncBlock, safeBlock, safeToForceGCs, saveThreadState, setDisableGCDepth, setDisallowAllocationsByThisThread, setEmergencyAllocation, setName, setOutOfMemoryError, setPhysicalAllocationFailed, setPriority, setupBootJavaThread, setupBootThread, shouldBeSampled, sleep, sleep, snapshotHandshakeThreads, softHandshake, softRendezvous, softRendezvousCheckAndClear, softRendezvousCommit, start, stop, suspend, terminate, toString, trace, trace, trace, traceback, traceback, traceHex, unblock, unpark, wait, wait, waitAbsoluteNanos, worldStopped, yield, yieldpoint, yieldpointFromBackedge, yieldpointFromEpilogue, yieldpointFromPrologue, yieldpointsEnabled
 
Methods inherited from class org.jikesrvm.mm.mminterface.Selected.Mutator
get, getThread
 
Methods inherited from class org.mmtk.plan.generational.immix.GenImmixMutator
alloc, collectionPhase, getAllocatorFromSpace, postAlloc
 
Methods inherited from class org.mmtk.plan.generational.GenMutator
assertRemsetsFlushed, flushRememberedSets, objectReferenceBulkCopy, objectReferenceNonHeapWrite, objectReferenceTryCompareAndSwap, objectReferenceWrite
 
Methods inherited from class org.mmtk.plan.MutatorContext
addressBulkCopy, addressRead, addressTryCompareAndSwap, addressWrite, booleanBulkCopy, booleanRead, booleanWrite, byteBulkCopy, byteRead, byteWrite, charBulkCopy, charRead, charWrite, checkAllocator, deinitMutator, doubleBulkCopy, doubleRead, doubleWrite, extentBulkCopy, extentRead, extentWrite, floatBulkCopy, floatRead, floatWrite, flush, getId, getLog, initMutator, intBulkCopy, intRead, intTryCompareAndSwap, intWrite, javaLangReferenceReadBarrier, longBulkCopy, longRead, longTryCompareAndSwap, longWrite, objectReferenceNonHeapRead, objectReferenceRead, offsetBulkCopy, offsetRead, offsetWrite, shortBulkCopy, shortRead, shortWrite, wordBulkCopy, wordRead, wordTryCompareAndSwap, wordWrite
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

osr_flag

public boolean osr_flag
Constructor Detail

OSROrganizerThread

public OSROrganizerThread()
Constructor

Method Detail

run

public void run()
Description copied from class: RVMThread
Method to be executed when this thread starts running. Calls java.lang.Thread.run but system threads can override directly.

Overrides:
run in class RVMThread

activate

public void activate()
Activates organizer thread if it is waiting.


processOsrRequest

private void processOsrRequest()