Package | Description |
---|---|
gov.nasa.jpf.jvm | |
gov.nasa.jpf.jvm.bytecode | |
gov.nasa.jpf.listener | |
gov.nasa.jpf.perturb | |
gov.nasa.jpf.vm | |
gov.nasa.jpf.vm.choice | |
gov.nasa.jpf.vm.serialize |
Modifier and Type | Class and Description |
---|---|
class |
JVMDirectCallStackFrame
a direct call stackframe that supports JVM calling conventions
|
class |
JVMNativeStackFrame
a NativeStackFrame used for calling NativeMethods from Java bytecode
|
class |
JVMStackFrame
a stackframe that is used for executing Java bytecode, supporting both
locals and an operand stack.
|
Modifier and Type | Method and Description |
---|---|
StackFrame |
JVMClassInfo.createStackFrame(ThreadInfo ti,
MethodInfo callee) |
Modifier and Type | Field and Description |
---|---|
protected StackFrame |
ReturnInstruction.returnFrame |
Modifier and Type | Method and Description |
---|---|
StackFrame |
ReturnInstruction.getReturnFrame() |
Modifier and Type | Method and Description |
---|---|
protected void |
FRETURN.getAndSaveReturnValue(StackFrame frame) |
protected void |
RETURN.getAndSaveReturnValue(StackFrame frame) |
protected void |
ARETURN.getAndSaveReturnValue(StackFrame frame) |
protected void |
NATIVERETURN.getAndSaveReturnValue(StackFrame frame) |
protected void |
IRETURN.getAndSaveReturnValue(StackFrame ti) |
protected abstract void |
ReturnInstruction.getAndSaveReturnValue(StackFrame frame) |
protected void |
LongReturn.getAndSaveReturnValue(StackFrame frame) |
protected Object |
FRETURN.getReturnedOperandAttr(StackFrame frame) |
protected Object |
RETURN.getReturnedOperandAttr(StackFrame frame) |
protected Object |
ARETURN.getReturnedOperandAttr(StackFrame frame) |
protected Object |
NATIVERETURN.getReturnedOperandAttr(StackFrame frame) |
protected Object |
IRETURN.getReturnedOperandAttr(StackFrame frame) |
protected abstract Object |
ReturnInstruction.getReturnedOperandAttr(StackFrame frame) |
protected Object |
LongReturn.getReturnedOperandAttr(StackFrame frame) |
boolean |
IFNULL.popConditionValue(StackFrame frame) |
boolean |
IFGE.popConditionValue(StackFrame frame) |
boolean |
IFGT.popConditionValue(StackFrame frame) |
boolean |
IF_ICMPLT.popConditionValue(StackFrame frame) |
boolean |
IFLT.popConditionValue(StackFrame frame) |
boolean |
IF_ICMPNE.popConditionValue(StackFrame frame) |
boolean |
IF_ICMPGE.popConditionValue(StackFrame frame) |
boolean |
IFLE.popConditionValue(StackFrame frame) |
boolean |
IFNE.popConditionValue(StackFrame frame) |
boolean |
IFEQ.popConditionValue(StackFrame frame) |
abstract boolean |
IfInstruction.popConditionValue(StackFrame frame)
retrieve value of jump condition from operand stack
(not ideal to have this public, but some listeners might need it for
skipping the insn, plus we require it for subclass factorization)
|
boolean |
IF_ICMPGT.popConditionValue(StackFrame frame) |
boolean |
IF_ICMPLE.popConditionValue(StackFrame frame) |
boolean |
IF_ICMPEQ.popConditionValue(StackFrame frame) |
boolean |
IF_ACMPNE.popConditionValue(StackFrame frame) |
boolean |
IFNONNULL.popConditionValue(StackFrame frame) |
boolean |
IF_ACMPEQ.popConditionValue(StackFrame frame) |
protected void |
PUTFIELD.popOperands1(StackFrame frame) |
protected void |
GETSTATIC.popOperands1(StackFrame frame) |
protected abstract void |
FieldInstruction.popOperands1(StackFrame frame) |
protected void |
PUTSTATIC.popOperands1(StackFrame frame) |
protected void |
GETFIELD.popOperands1(StackFrame frame) |
protected void |
PUTFIELD.popOperands2(StackFrame frame) |
protected void |
GETSTATIC.popOperands2(StackFrame frame) |
protected abstract void |
FieldInstruction.popOperands2(StackFrame frame) |
protected void |
PUTSTATIC.popOperands2(StackFrame frame) |
protected void |
GETFIELD.popOperands2(StackFrame frame) |
protected void |
LASTORE.popValue(StackFrame frame) |
protected void |
DASTORE.popValue(StackFrame frame) |
protected void |
CASTORE.popValue(StackFrame frame) |
protected void |
FASTORE.popValue(StackFrame frame) |
protected void |
SASTORE.popValue(StackFrame frame) |
protected void |
BASTORE.popValue(StackFrame frame) |
protected abstract void |
ArrayStoreInstruction.popValue(StackFrame frame) |
protected void |
IASTORE.popValue(StackFrame frame) |
protected void |
AASTORE.popValue(StackFrame frame) |
protected void |
IALOAD.push(StackFrame frame,
ElementInfo ei,
int index) |
protected void |
CALOAD.push(StackFrame frame,
ElementInfo e,
int index) |
protected void |
BALOAD.push(StackFrame frame,
ElementInfo ei,
int index) |
protected void |
LALOAD.push(StackFrame frame,
ElementInfo ei,
int index) |
protected void |
LongArrayLoadInstruction.push(StackFrame frame,
ElementInfo e,
int index) |
protected void |
AALOAD.push(StackFrame frame,
ElementInfo ei,
int index) |
protected void |
DALOAD.push(StackFrame frame,
ElementInfo ei,
int index) |
protected void |
FALOAD.push(StackFrame frame,
ElementInfo ei,
int index) |
protected void |
SALOAD.push(StackFrame frame,
ElementInfo ei,
int index) |
protected abstract void |
ArrayLoadInstruction.push(StackFrame frame,
ElementInfo e,
int index) |
protected void |
FRETURN.pushReturnValue(StackFrame frame) |
protected void |
RETURN.pushReturnValue(StackFrame frame) |
protected void |
ARETURN.pushReturnValue(StackFrame frame) |
protected void |
NATIVERETURN.pushReturnValue(StackFrame fr) |
protected void |
IRETURN.pushReturnValue(StackFrame ti) |
protected abstract void |
ReturnInstruction.pushReturnValue(StackFrame frame) |
protected void |
LongReturn.pushReturnValue(StackFrame frame) |
protected Instruction |
FieldInstruction.put(ThreadInfo ti,
StackFrame frame,
ElementInfo eiFieldOwner) |
protected Instruction |
FieldInstruction.put1(ThreadInfo ti,
StackFrame frame,
ElementInfo eiFieldOwner) |
protected Instruction |
FieldInstruction.put2(ThreadInfo ti,
StackFrame frame,
ElementInfo eiFieldOwner) |
void |
ReturnInstruction.setReturnFrame(StackFrame frame) |
Modifier and Type | Field and Description |
---|---|
protected StackFrame |
Perturbator.savedFrame |
Modifier and Type | Method and Description |
---|---|
protected boolean |
OOMEInjector.checkCallerForOOM(StackFrame frame,
Instruction insn) |
Modifier and Type | Field and Description |
---|---|
protected StackFrame |
GenericDataAbstractor.stackFrame |
Modifier and Type | Method and Description |
---|---|
ChoiceGenerator<?> |
OperandPerturbator.createChoiceGenerator(String id,
StackFrame frame,
Object refObject) |
ChoiceGenerator<?> |
GenericDataAbstractor.createChoiceGenerator(String id,
StackFrame frame,
Object refObject) |
ChoiceGenerator<?> |
IntOverUnder.createChoiceGenerator(String id,
StackFrame frame,
Object refObject) |
boolean |
OperandPerturbator.perturb(ChoiceGenerator<?> cg,
StackFrame frame) |
boolean |
GenericDataAbstractor.perturb(ChoiceGenerator<?> cg,
StackFrame frame) |
boolean |
IntOverUnder.perturb(ChoiceGenerator<?> cg,
StackFrame frame) |
void |
GenericDataAbstractor.populateValuations(StackFrame frame,
int paramIndex,
int dataIndex) |
void |
GenericDataAbstractor.setMethodInfo(MethodInfo m,
StackFrame frame) |
Modifier and Type | Class and Description |
---|---|
class |
DirectCallStackFrame
DirectCallStackFrames are only used for overlay calls (from native code), i.e.
|
class |
NativeStackFrame
a stack frame for MJI methods
This is a special Stackframe to execute NativeMethodInfos, which are just a wrapper around Java reflection
calls.
|
Modifier and Type | Field and Description |
---|---|
protected StackFrame |
StackFrame.prev
the previous StackFrame (usually the caller, null if first).
|
protected StackFrame |
ThreadInfo.top |
Modifier and Type | Method and Description |
---|---|
StackFrame |
NativeStackFrame.clone() |
StackFrame |
StackFrame.clone() |
StackFrame |
ClassInfo.createStackFrame(ThreadInfo ti,
MethodInfo callee) |
StackFrame |
ThreadInfo.getCallerStackFrame() |
StackFrame |
MJIEnv.getCallerStackFrame() |
StackFrame |
ThreadInfo.getCallerStackFrame(int offset) |
StackFrame |
HandlerContext.getFrame() |
StackFrame |
ThreadInfo.getLastInvokedStackFrame() |
StackFrame |
ThreadInfo.getLastNonSyntheticStackFrame() |
StackFrame |
MJIEnv.getModifiableCallerStackFrame() |
StackFrame |
ThreadInfo.getModifiableFrame(StackFrame frame)
this replaces all frames up from 'frame' to 'top' with modifiable ones.
|
StackFrame |
ThreadInfo.getModifiableLastNonSyntheticStackFrame() |
StackFrame |
ThreadInfo.getModifiableTopFrame()
Returns a clone of the top stack frame.
|
StackFrame |
StackFrame.getPrevious() |
StackFrame |
ThreadInfo.getStackFrameExecuting(Instruction insn,
int offset)
note that we don't provide a modifiable version of this.
|
StackFrame |
ThreadInfo.getTopFrame()
Returns the top stack frame.
|
StackFrame |
ThreadInfo.StackIterator.next() |
StackFrame |
ThreadInfo.InvokedStackIterator.next() |
StackFrame |
ThreadInfo.popAndGetModifiableTopFrame() |
StackFrame |
ThreadInfo.popDirectCallFrame()
removing DirectCallStackFrames is a bit different (only happens from
DIRECTCALLRETURN insns)
|
protected StackFrame |
ThreadInfo.popUncaughtHandlerFrame() |
protected StackFrame |
ThreadInfo.unwindToFirstFrame() |
Modifier and Type | Method and Description |
---|---|
List<StackFrame> |
ThreadInfo.getInvokedStackFrames()
returns StackFrames which have been entered through a corresponding
invoke instruction (in top first order)
|
List<StackFrame> |
ThreadInfo.getStack()
Deprecated.
- use Iterable
|
Iterable<StackFrame> |
ThreadInfo.invokedStackFrames() |
Iterator<StackFrame> |
ThreadInfo.iterator() |
Modifier and Type | Method and Description |
---|---|
void |
ThreadInfo.executeMethodAtomic(StackFrame frame)
Executes a method call.
|
void |
ThreadInfo.executeMethodHidden(StackFrame frame)
enter method atomically, but also hide it from listeners and do NOT add
executed instructions to the path.
|
StackFrame |
ThreadInfo.getModifiableFrame(StackFrame frame)
this replaces all frames up from 'frame' to 'top' with modifiable ones.
|
protected void |
ThreadInfo.markTfChanged(StackFrame frame) |
void |
JPFOutputStream.print(StackFrame frame) |
void |
ThreadInfo.pushFrame(StackFrame frame)
Adds a new stack frame for a new called method.
|
void |
StackFrame.setPrevious(StackFrame frame)
to be set (by ThreadInfo) when the frame is pushed.
|
void |
ThreadInfo.setTopFrame(StackFrame frame)
replace the top frame - this is a dangerous method that should only
be used from Restoreres and to restore operators and locals in post-execution notifications
to their pre-execution contents
|
protected void |
ThreadInfo.unwindTo(StackFrame newTopFrame) |
Modifier and Type | Method and Description |
---|---|
protected T |
NumberChoiceFromList.parse(String varSpec,
StackFrame resolveFrame) |
Modifier and Type | Method and Description |
---|---|
protected void |
CFSerializer.serializeFrame(StackFrame frame) |
protected void |
DynamicAbstractionSerializer.serializeFrame(StackFrame frame) |
protected void |
DebugCFSerializer.serializeFrame(StackFrame frame) |
protected void |
FilteringSerializer.serializeFrame(StackFrame frame)
more generic, but less efficient because it can't use block operations
protected void _serializeFrame(StackFrame frame){
buf.add(frame.getMethodInfo().getGlobalId());
buf.add(frame.getPC().getInstructionIndex());
int len = frame.getTopPos()+1;
buf.add(len);
// this looks like something we can push into the frame
int[] slots = frame.getSlots();
for (int i = 0; i < len; i++) {
if (frame.isReferenceSlot(i)) {
processReference(slots[i]);
} else {
buf.add(slots[i]);
}
}
}
|