public abstract class VM
extends java.lang.Object
Modifier and Type | Field and Description |
---|---|
protected Predicate<ThreadInfo> |
alivePredicate |
protected Backtracker |
backtracker
the structure responsible for storing and restoring backtrack info
|
static boolean |
CHECK_CONSISTENCY
this is a debugging aid to control compilation of expensive consistency checks
(we don't control these with class-wise assertion enabling since we do use
unconditional assertions for mandatory consistency checks)
|
protected Config |
config |
protected static java.lang.String[] |
EMPTY_ARGS |
protected static int |
error_id
The number of errors saved so far.
|
protected FunctionObjectFactory |
funcObjFactory |
protected boolean |
indentOutput |
protected boolean |
initialized |
protected boolean |
isBigEndian |
protected boolean |
isTraceReplay |
protected JPF |
jpf
our execution context
|
protected Transition |
lastTrailInfo
various caches for VMListener state acquisition.
|
protected VMListener[] |
listeners
potential execution listeners.
|
protected static JPFLogger |
log |
protected int |
newStateId
this was the last stateId - note this is also used for stateless model checking
|
protected java.lang.StringBuilder |
out
execution path to current state
|
protected Path |
path |
protected boolean |
pathOutput |
protected java.util.ArrayList<java.lang.Runnable> |
postGcActions |
protected boolean |
processFinalizers |
protected StateRestorer<?> |
restorer
optional serializer/restorer to support backtracker
|
protected boolean |
runGc |
protected Scheduler |
scheduler
ThreadChoiceGenerator management related to data races and shared objects
|
protected StateSerializer |
serializer
optional serializer to support stateSet
|
protected SystemState |
ss |
protected StateSet |
stateSet
the repository we use to find out if we already have seen a state
|
protected Predicate<ThreadInfo> |
timedoutRunnablePredicate |
protected TimeModel |
timeModel
how we model execution time
|
protected boolean |
transitionOccurred
did we get a new transition
|
protected boolean |
treeOutput |
protected Predicate<ThreadInfo> |
userliveNonDaemonPredicate |
protected Predicate<ThreadInfo> |
userTimedoutRunnablePredicate |
protected static VM |
vm
<2do> - this is a hack to be removed once there are no static references
anymore
|
Modifier | Constructor and Description |
---|---|
protected |
VM()
just here for unit test mockups, don't use as implicit base ctor in
VM derived classes
|
|
VM(JPF jpf,
Config conf)
be prepared this might throw JPFConfigExceptions
|
Modifier and Type | Method and Description |
---|---|
void |
activateGC() |
void |
addListener(VMListener newListener) |
void |
addPostGcAction(java.lang.Runnable r) |
boolean |
backtrack()
Moves one step backward.
|
void |
breakTransition(java.lang.String reason)
imperatively break the transition to enable state matching
|
void |
checkConsistency(boolean isStateStore)
only for debugging, this is expensive
If this is a store (forward) this is called before the state is stored.
|
void |
cleanUp()
called after the JPF run is finished.
|
protected ThreadInfo |
createFinalizerThreadInfo(int id,
ApplicationContext appCtx) |
protected ThreadInfo |
createMainThreadInfo(int id,
ApplicationContext appCtx) |
protected SystemClassLoaderInfo |
createSystemClassLoaderInfo(int appId) |
protected void |
createSystemClassLoaderObject(SystemClassLoaderInfo sysCl,
ThreadInfo tiMain) |
protected ThreadInfo |
createThreadInfo(int objRef,
int groupRef,
int runnableRef,
int nameRef) |
long |
currentTimeMillis()
<2do> this is where we will hook in a better time model
|
void |
dumpThreadStates() |
boolean |
finalizersEnabled() |
void |
forceState() |
boolean |
forward()
advance the program state
forward() and backtrack() are the two primary interfaces towards the Search
driver.
|
Predicate<ThreadInfo> |
getAlivePredicate() |
abstract ApplicationContext |
getApplicationContext(int objRef) |
abstract ApplicationContext[] |
getApplicationContexts() |
abstract Predicate<ThreadInfo> |
getAppTimedoutRunnablePredicate() |
Backtracker |
getBacktracker() |
ChoiceGenerator<?> |
getChoiceGenerator()
return the last registered SystemState's ChoiceGenerator object
NOTE: there might be more than one ChoiceGenerator associated with the
current transition (ChoiceGenerators can be cascaded)
|
ChoiceGenerator<?>[] |
getChoiceGenerators()
returns all ChoiceGenerators in current path
|
<T extends ChoiceGenerator<?>> |
getChoiceGeneratorsOfType(java.lang.Class<T> cgType) |
ClassInfo |
getClassInfo(int objref) |
protected ClassLoaderInfo |
getClassLoader(int gid)
Returns the ClassLoader with the given globalId
|
ClassLoaderList |
getClassLoaderList() |
Path |
getClonedPath()
use that one if you have to store the path for subsequent use
NOTE: without a prior call to updatePath(), this does NOT contain the
ongoing transition.
|
Config |
getConfig() |
abstract ApplicationContext |
getCurrentApplicationContext()
given an object reference, it returns the ApplicationContext of the process to which
this object belongs
|
<T extends ChoiceGenerator<?>> |
getCurrentChoiceGenerator(java.lang.String id,
java.lang.Class<T> cgType)
return the latest registered ChoiceGenerator used in this transition
that matches the provided 'id' and is of 'cgType'.
|
ThreadInfo |
getCurrentThread() |
Transition |
getCurrentTransition()
this is the ongoing transition.
|
abstract Predicate<ThreadInfo> |
getDaemonRunnablePredicate() |
ElementInfo |
getElementInfo(int objref) |
java.lang.Exception |
getException() |
FinalizerThreadInfo |
getFinalizerThread() |
FunctionObjectFactory |
getFunctionObjectFacotry() |
Heap |
getHeap() |
abstract java.util.Map<java.lang.Integer,IntTable<java.lang.String>> |
getInitialInternStringsMap() |
Instruction |
getInstruction() |
JPF |
getJPF() |
KernelState |
getKernelState() |
ChoiceGenerator<?> |
getLastChoiceGeneratorInThread(ThreadInfo ti) |
<T extends ChoiceGenerator<?>> |
getLastChoiceGeneratorOfType(java.lang.Class<T> cgType) |
Step |
getLastStep() |
Transition |
getLastTransition() |
ThreadInfo[] |
getLiveThreads() |
protected ClassInfo |
getMainClassInfo(SystemClassLoaderInfo sysCl,
java.lang.String mainClassName,
ThreadInfo tiMain,
java.util.List<ClassInfo> list)
this adds the application main class and its supers to the list of startup classes
|
protected MethodInfo |
getMainEntryMethodInfo(java.lang.String mthName,
ClassInfo ciMain) |
ElementInfo |
getModifiableElementInfo(int objref) |
ChoiceGenerator<?> |
getNextChoiceGenerator() |
<T> T |
getNextListenerOfType(java.lang.Class<T> type,
T prev) |
abstract int |
getNumberOfApplications() |
Path |
getPath()
NOTE: only use this locally, since the path is getting modified by the VM
The path only contains all states when queried from a stateAdvanced() notification.
|
int |
getPathLength() |
ExceptionInfo |
getPendingException()
note this is gone after backtracking or starting the next exception
|
java.lang.String |
getPendingOutput()
get the pending output (not yet stored in the path)
|
protected boolean |
getPlatformEndianness(Config config) |
RestorableVMState |
getRestorableState()
Bundles up the state of the system for export
|
<T> StateRestorer<T> |
getRestorer() |
abstract Predicate<ThreadInfo> |
getRunnablePredicate() |
Scheduler |
getScheduler() |
Search |
getSearch()
not ideal to have this here since it is kind of a backlink, but it's not
any better if listeners have to dig this out from JPF
Note - this isn't set during initialization, since the VM object is created first
|
StateSerializer |
getSerializer() |
protected java.util.List<ClassInfo> |
getStartupSystemClassInfos(SystemClassLoaderInfo sysCl,
ThreadInfo tiMain)
return a list of ClassInfos for essential system types
If system classes are not found, or are not valid JPF model classes, we throw
a JPFConfigException and exit
returned ClassInfos are not yet registered in Statics and don't have class objects
|
protected java.util.List<java.lang.String> |
getStartupSystemClassNames()
the minimal set of system classes we need for initialization
|
int |
getStateCount() |
int |
getStateId()
get the numeric id for the current state
Note: this can be called several times (by the search and observers) for
every forward()/backtrack(), so we want to cache things a bit
|
StateSet |
getStateSet()
Returns the stateSet if states are being matched.
|
abstract java.lang.String |
getSUTDescription() |
abstract java.lang.String |
getSUTName() |
SystemState |
getSystemState()
Gets the system state.
|
ThreadList |
getThreadList() |
java.lang.String |
getThreadName() |
Predicate<ThreadInfo> |
getTimedoutRunnablePredicate() |
Predicate<ThreadInfo> |
getUserLiveNonDaemonPredicate() |
Predicate<ThreadInfo> |
getUserTimedoutRunnablePredicate() |
static VM |
getVM()
<2do> this is a band aid to bundle all these legacy reference chains
from JPFs past.
|
Instruction |
handleException(ThreadInfo ti,
int xObjRef)
this is here so that we can intercept it in subclassed VMs
|
boolean |
hasListenerOfType(java.lang.Class<?> listenerCls) |
boolean |
hasNextChoiceGenerator() |
boolean |
hasPendingException() |
boolean |
hasToRecordPathOutput() |
boolean |
hasToRecordSteps() |
void |
ignoreState() |
void |
ignoreState(boolean cond)
override the state matching - ignore this state, no matter if we changed
the heap or stacks.
|
void |
initFields(Config config) |
abstract boolean |
initialize()
this is the main initialization point that sets up startup objects threads and callstacks.
|
protected void |
initializeFinalizerThread(ApplicationContext appCtx,
int tid) |
protected ThreadInfo |
initializeMainThread(ApplicationContext appCtx,
int tid)
create and initialize the main thread for the given ApplicationContext.
|
protected void |
initSubsystems(Config config) |
protected void |
initSystemState(ThreadInfo mainThread) |
protected void |
initTimeModel(Config config) |
boolean |
isBigEndianPlatform() |
boolean |
isBoringState() |
abstract boolean |
isDeadlocked() |
abstract boolean |
isEndState()
We made this to be overriden by Single/MultiprcessesVM implementations,
since for MultiprcessesVM one can decide when to terminate (after the
the termination of all processes or only one process).
|
boolean |
isIgnoredState() |
boolean |
isInitialized() |
boolean |
isInterestingState() |
boolean |
isNewState()
answers if the current state already has been visited.
|
boolean |
isSingleProcess() |
boolean |
isTraceReplay() |
boolean |
isVisitedState() |
void |
kernelStateChanged() |
long |
nanoTime()
<2do> this is where we will hook in a better time model
|
protected void |
notifyChoiceGeneratorAdvanced(ChoiceGenerator<?> cg) |
protected void |
notifyChoiceGeneratorProcessed(ChoiceGenerator<?> cg) |
protected void |
notifyChoiceGeneratorRegistered(ChoiceGenerator<?> cg,
ThreadInfo ti) |
protected void |
notifyChoiceGeneratorSet(ChoiceGenerator<?> cg) |
protected void |
notifyClassLoaded(ClassInfo ci) |
protected void |
notifyExceptionBailout(ThreadInfo ti) |
protected void |
notifyExceptionHandled(ThreadInfo ti) |
protected void |
notifyExceptionThrown(ThreadInfo ti,
ElementInfo ei) |
protected void |
notifyExecuteInstruction(ThreadInfo ti,
Instruction insn) |
protected void |
notifyGCBegin() |
protected void |
notifyGCEnd() |
protected void |
notifyInstructionExecuted(ThreadInfo ti,
Instruction insn,
Instruction nextInsn) |
protected void |
notifyLoadClass(ClassFile cf) |
protected void |
notifyMethodEntered(ThreadInfo ti,
MethodInfo mi) |
protected void |
notifyMethodExited(ThreadInfo ti,
MethodInfo mi) |
protected void |
notifyObjectCreated(ThreadInfo ti,
ElementInfo ei) |
protected void |
notifyObjectExposed(ThreadInfo ti,
ElementInfo eiShared,
ElementInfo eiExposed) |
protected void |
notifyObjectLocked(ThreadInfo ti,
ElementInfo ei) |
protected void |
notifyObjectNotifies(ThreadInfo ti,
ElementInfo ei) |
protected void |
notifyObjectNotifiesAll(ThreadInfo ti,
ElementInfo ei) |
protected void |
notifyObjectReleased(ThreadInfo ti,
ElementInfo ei) |
protected void |
notifyObjectShared(ThreadInfo ti,
ElementInfo ei) |
protected void |
notifyObjectUnlocked(ThreadInfo ti,
ElementInfo ei) |
protected void |
notifyObjectWait(ThreadInfo ti,
ElementInfo ei) |
protected void |
notifyThreadBlocked(ThreadInfo ti) |
protected void |
notifyThreadInterrupted(ThreadInfo ti) |
protected void |
notifyThreadNotified(ThreadInfo ti) |
protected void |
notifyThreadScheduled(ThreadInfo ti) |
protected void |
notifyThreadStarted(ThreadInfo ti) |
protected void |
notifyThreadTerminated(ThreadInfo ti) |
protected void |
notifyThreadWaiting(ThreadInfo ti) |
protected void |
notifyVMInitialized() |
void |
print(boolean b) |
void |
print(char c) |
void |
print(double d) |
void |
print(float f) |
void |
print(int i) |
void |
print(long l) |
void |
print(java.lang.String s) |
void |
printChoiceGeneratorStack() |
void |
printCurrentStackTrace()
Prints the current stack trace.
|
void |
printLiveThreadStatus(java.io.PrintWriter pw)
print call stacks of all live threads
this is also used for debugging purposes, so we can't move it to the Reporter system
(it's also using a bit too many internals for that)
|
void |
println() |
void |
println(java.lang.String s) |
void |
processFinalizers() |
void |
processPostGcActions()
to be called from the Heap after GC is completed (i.e.
|
protected void |
pushClinits(java.util.List<ClassInfo> startupClasses,
ThreadInfo tiMain) |
protected void |
pushMainEntry(MethodInfo miMain,
java.lang.String[] args,
ThreadInfo tiMain) |
protected void |
pushMainEntryArgs(MethodInfo miMain,
java.lang.String[] args,
ThreadInfo tiMain,
DirectCallStackFrame frame) |
void |
recordSteps(boolean cond) |
void |
registerClassLoader(ClassLoaderInfo cl) |
int |
registerThread(ThreadInfo ti) |
protected void |
registerThreadListCleanup(ClassInfo ciThread) |
void |
removeListener(VMListener removeListener) |
void |
resetNextCG() |
void |
restoreState(RestorableVMState state) |
void |
retainStateAttributes(boolean isRetained) |
void |
setMandatoryNextChoiceGenerator(ChoiceGenerator<?> cg,
java.lang.String failMsg) |
boolean |
setNextChoiceGenerator(ChoiceGenerator<?> cg) |
protected void |
setRootCG()
override this if the concrete VM needs a special root CG
|
void |
setSerializer(StateSerializer newSerializer) |
void |
setTraceReplay(boolean isReplay) |
void |
storePathOutput() |
void |
storeTrace(java.lang.String fileName,
java.lang.String comment,
boolean verbose) |
abstract void |
terminateProcess(ThreadInfo ti) |
boolean |
transitionOccurred() |
void |
updatePath()
store the current SystemState's Trail in our path, after updating it
with whatever annotations the VM wants to add.
|
public static final boolean CHECK_CONSISTENCY
protected static final java.lang.String[] EMPTY_ARGS
protected static JPFLogger log
protected JPF jpf
protected static int error_id
protected static VM vm
protected SystemState ss
protected FunctionObjectFactory funcObjFactory
protected Path path
protected java.lang.StringBuilder out
protected Transition lastTrailInfo
protected boolean isTraceReplay
protected StateSet stateSet
protected int newStateId
protected Backtracker backtracker
protected StateRestorer<?> restorer
protected StateSerializer serializer
protected VMListener[] listeners
protected boolean transitionOccurred
protected TimeModel timeModel
protected Scheduler scheduler
protected Config config
protected boolean runGc
protected boolean treeOutput
protected boolean pathOutput
protected boolean indentOutput
protected boolean processFinalizers
protected boolean isBigEndian
protected boolean initialized
protected Predicate<ThreadInfo> userliveNonDaemonPredicate
protected Predicate<ThreadInfo> timedoutRunnablePredicate
protected Predicate<ThreadInfo> alivePredicate
protected Predicate<ThreadInfo> userTimedoutRunnablePredicate
protected java.util.ArrayList<java.lang.Runnable> postGcActions
protected VM()
public JPF getJPF()
public void initFields(Config config)
protected void initSubsystems(Config config)
protected void initTimeModel(Config config)
public void cleanUp()
protected boolean getPlatformEndianness(Config config)
public boolean isBigEndianPlatform()
public boolean finalizersEnabled()
public boolean isInitialized()
public boolean isSingleProcess()
protected ThreadInfo createMainThreadInfo(int id, ApplicationContext appCtx)
protected ThreadInfo createThreadInfo(int objRef, int groupRef, int runnableRef, int nameRef)
protected ThreadInfo createFinalizerThreadInfo(int id, ApplicationContext appCtx)
protected java.util.List<java.lang.String> getStartupSystemClassNames()
protected java.util.List<ClassInfo> getStartupSystemClassInfos(SystemClassLoaderInfo sysCl, ThreadInfo tiMain)
protected ClassInfo getMainClassInfo(SystemClassLoaderInfo sysCl, java.lang.String mainClassName, ThreadInfo tiMain, java.util.List<ClassInfo> list)
protected SystemClassLoaderInfo createSystemClassLoaderInfo(int appId)
protected void createSystemClassLoaderObject(SystemClassLoaderInfo sysCl, ThreadInfo tiMain)
protected void pushMainEntryArgs(MethodInfo miMain, java.lang.String[] args, ThreadInfo tiMain, DirectCallStackFrame frame)
protected void pushMainEntry(MethodInfo miMain, java.lang.String[] args, ThreadInfo tiMain)
protected MethodInfo getMainEntryMethodInfo(java.lang.String mthName, ClassInfo ciMain)
protected void pushClinits(java.util.List<ClassInfo> startupClasses, ThreadInfo tiMain)
public abstract boolean initialize()
protected ThreadInfo initializeMainThread(ApplicationContext appCtx, int tid)
protected void initializeFinalizerThread(ApplicationContext appCtx, int tid)
protected void registerThreadListCleanup(ClassInfo ciThread)
protected void setRootCG()
protected void initSystemState(ThreadInfo mainThread)
public void addPostGcAction(java.lang.Runnable r)
public void processPostGcActions()
public void addListener(VMListener newListener)
public boolean hasListenerOfType(java.lang.Class<?> listenerCls)
public <T> T getNextListenerOfType(java.lang.Class<T> type, T prev)
public void removeListener(VMListener removeListener)
public void setTraceReplay(boolean isReplay)
public boolean isTraceReplay()
public boolean hasToRecordSteps()
public void recordSteps(boolean cond)
public boolean hasToRecordPathOutput()
protected void notifyVMInitialized()
protected void notifyChoiceGeneratorRegistered(ChoiceGenerator<?> cg, ThreadInfo ti)
protected void notifyChoiceGeneratorSet(ChoiceGenerator<?> cg)
protected void notifyChoiceGeneratorAdvanced(ChoiceGenerator<?> cg)
protected void notifyChoiceGeneratorProcessed(ChoiceGenerator<?> cg)
protected void notifyExecuteInstruction(ThreadInfo ti, Instruction insn)
protected void notifyInstructionExecuted(ThreadInfo ti, Instruction insn, Instruction nextInsn)
protected void notifyThreadStarted(ThreadInfo ti)
protected void notifyThreadBlocked(ThreadInfo ti)
protected void notifyThreadWaiting(ThreadInfo ti)
protected void notifyThreadNotified(ThreadInfo ti)
protected void notifyThreadInterrupted(ThreadInfo ti)
protected void notifyThreadTerminated(ThreadInfo ti)
protected void notifyThreadScheduled(ThreadInfo ti)
protected void notifyLoadClass(ClassFile cf)
protected void notifyClassLoaded(ClassInfo ci)
protected void notifyObjectCreated(ThreadInfo ti, ElementInfo ei)
protected void notifyObjectReleased(ThreadInfo ti, ElementInfo ei)
protected void notifyObjectLocked(ThreadInfo ti, ElementInfo ei)
protected void notifyObjectUnlocked(ThreadInfo ti, ElementInfo ei)
protected void notifyObjectWait(ThreadInfo ti, ElementInfo ei)
protected void notifyObjectExposed(ThreadInfo ti, ElementInfo eiShared, ElementInfo eiExposed)
protected void notifyObjectShared(ThreadInfo ti, ElementInfo ei)
protected void notifyObjectNotifies(ThreadInfo ti, ElementInfo ei)
protected void notifyObjectNotifiesAll(ThreadInfo ti, ElementInfo ei)
protected void notifyGCBegin()
protected void notifyGCEnd()
protected void notifyExceptionThrown(ThreadInfo ti, ElementInfo ei)
protected void notifyExceptionBailout(ThreadInfo ti)
protected void notifyExceptionHandled(ThreadInfo ti)
protected void notifyMethodEntered(ThreadInfo ti, MethodInfo mi)
protected void notifyMethodExited(ThreadInfo ti, MethodInfo mi)
public java.lang.String getThreadName()
public Instruction getInstruction()
public ExceptionInfo getPendingException()
public Step getLastStep()
public Transition getLastTransition()
public ClassInfo getClassInfo(int objref)
public Path getPath()
public Transition getCurrentTransition()
public Path getClonedPath()
public int getPathLength()
public ThreadList getThreadList()
public ClassLoaderList getClassLoaderList()
public RestorableVMState getRestorableState()
public SystemState getSystemState()
public KernelState getKernelState()
public void kernelStateChanged()
public Config getConfig()
public Backtracker getBacktracker()
public <T> StateRestorer<T> getRestorer()
public StateSerializer getSerializer()
public void setSerializer(StateSerializer newSerializer)
public StateSet getStateSet()
public Scheduler getScheduler()
public FunctionObjectFactory getFunctionObjectFacotry()
public ChoiceGenerator<?> getChoiceGenerator()
public ChoiceGenerator<?> getNextChoiceGenerator()
public boolean hasNextChoiceGenerator()
public boolean setNextChoiceGenerator(ChoiceGenerator<?> cg)
public void setMandatoryNextChoiceGenerator(ChoiceGenerator<?> cg, java.lang.String failMsg)
public <T extends ChoiceGenerator<?>> T getCurrentChoiceGenerator(java.lang.String id, java.lang.Class<T> cgType)
public ChoiceGenerator<?>[] getChoiceGenerators()
public <T extends ChoiceGenerator<?>> T[] getChoiceGeneratorsOfType(java.lang.Class<T> cgType)
public <T extends ChoiceGenerator<?>> T getLastChoiceGeneratorOfType(java.lang.Class<T> cgType)
public ChoiceGenerator<?> getLastChoiceGeneratorInThread(ThreadInfo ti)
public void print(java.lang.String s)
public void println(java.lang.String s)
public void print(boolean b)
public void print(char c)
public void print(int i)
public void print(long l)
public void print(double d)
public void print(float f)
public void println()
public java.lang.String getPendingOutput()
public Instruction handleException(ThreadInfo ti, int xObjRef)
public void storeTrace(java.lang.String fileName, java.lang.String comment, boolean verbose)
public void storePathOutput()
public void printChoiceGeneratorStack()
public ThreadInfo[] getLiveThreads()
public void printLiveThreadStatus(java.io.PrintWriter pw)
public void dumpThreadStates()
public boolean backtrack()
public void updatePath()
public boolean forward()
public void printCurrentStackTrace()
public void restoreState(RestorableVMState state)
public void activateGC()
public void retainStateAttributes(boolean isRetained)
public void forceState()
public void ignoreState(boolean cond)
public void ignoreState()
public void breakTransition(java.lang.String reason)
public boolean transitionOccurred()
public boolean isNewState()
public abstract boolean isEndState()
public boolean isVisitedState()
public boolean isIgnoredState()
public boolean isInterestingState()
public boolean isBoringState()
public boolean hasPendingException()
public abstract boolean isDeadlocked()
public java.lang.Exception getException()
public int getStateId()
public int getStateCount()
public static VM getVM()
public Search getSearch()
public abstract ApplicationContext getCurrentApplicationContext()
public abstract ApplicationContext getApplicationContext(int objRef)
public abstract ApplicationContext[] getApplicationContexts()
public abstract java.lang.String getSUTName()
public abstract java.lang.String getSUTDescription()
public abstract int getNumberOfApplications()
public Heap getHeap()
public ElementInfo getElementInfo(int objref)
public ElementInfo getModifiableElementInfo(int objref)
public ThreadInfo getCurrentThread()
public void registerClassLoader(ClassLoaderInfo cl)
public int registerThread(ThreadInfo ti)
protected ClassLoaderInfo getClassLoader(int gid)
public long currentTimeMillis()
public long nanoTime()
public void resetNextCG()
public void checkConsistency(boolean isStateStore)
public abstract void terminateProcess(ThreadInfo ti)
public abstract java.util.Map<java.lang.Integer,IntTable<java.lang.String>> getInitialInternStringsMap()
public abstract Predicate<ThreadInfo> getRunnablePredicate()
public abstract Predicate<ThreadInfo> getDaemonRunnablePredicate()
public abstract Predicate<ThreadInfo> getAppTimedoutRunnablePredicate()
public Predicate<ThreadInfo> getUserTimedoutRunnablePredicate()
public Predicate<ThreadInfo> getUserLiveNonDaemonPredicate()
public Predicate<ThreadInfo> getTimedoutRunnablePredicate()
public Predicate<ThreadInfo> getAlivePredicate()
public FinalizerThreadInfo getFinalizerThread()
public void processFinalizers()