public class ReferenceTracingInvocationUnit extends SimplifiedInvocationUnit
InvocationUnit
tags reference values of retrieved fields, passed method parameters,
method return values, and caught exceptions, so they can be traced throughout the execution of a
method. The tags are instruction offsets or parameter indices (not parameter offsets).TracedReferenceValue
,
InstructionOffsetValue
Constructor and Description |
---|
ReferenceTracingInvocationUnit(SimplifiedInvocationUnit invocationUnit)
Creates a new ReferenceTracingInvocationUnit.
|
Modifier and Type | Method and Description |
---|---|
void |
enterExceptionHandler(Clazz clazz,
Method method,
CodeAttribute codeAttribute,
int offset,
int catchType,
Stack stack)
Sets up the given stack for entering the given exception handler.
|
Value |
getExceptionValue(Clazz clazz,
ClassConstant catchClassConstant)
Returns the value of the specified exception.
|
Value |
getFieldClassValue(Clazz clazz,
FieldrefConstant fieldrefConstant,
java.lang.String type)
Returns the class though which the specified field is accessed.
|
Value |
getFieldValue(Clazz clazz,
FieldrefConstant fieldrefConstant,
java.lang.String type)
Returns the value of the specified field.
|
Value |
getMethodParameterValue(Clazz clazz,
Method method,
int parameterIndex,
java.lang.String type,
Clazz referencedClass)
Returns the value of the specified method parameter.
|
Value |
getMethodReturnValue(Clazz clazz,
AnyMethodrefConstant anyMethodrefConstant,
java.lang.String type)
Returns the return value of the specified method.
|
Value |
getMethodReturnValue(Clazz clazz,
InvokeDynamicConstant invokeDynamicConstant,
java.lang.String type)
Returns the return value of the specified method.
|
void |
invokeMember(Clazz clazz,
Method method,
CodeAttribute codeAttribute,
int offset,
ConstantInstruction constantInstruction,
Stack stack,
Variables variables)
Updates the given stack corresponding to the execution of the given field or method reference
instruction.
|
void |
setFieldClassValue(Clazz clazz,
FieldrefConstant fieldrefConstant,
ReferenceValue value)
Sets the class through which the specified field is accessed.
|
void |
setFieldValue(Clazz clazz,
FieldrefConstant fieldrefConstant,
Value value)
Sets the value of the specified field.
|
void |
setMethodParameterValue(Clazz clazz,
AnyMethodrefConstant anyMethodrefConstant,
int parameterIndex,
Value value)
Sets the value of the specified method parameter.
|
void |
setMethodReturnValue(Clazz clazz,
Method method,
Value value)
Sets the return value of the specified method.
|
protected Value |
trace(Value value,
InstructionOffsetValue traceValue)
Sets or replaces the trace value on a given value, returning the result.
|
protected Value |
trace(Value value,
int trace)
Sets or replaces the trace value on a given value, if it's a reference value, returning the
result.
|
enterMethod, exitMethod, methodMayHaveSideEffects, visitAnyMethodrefConstant, visitFieldrefConstant, visitInvokeDynamicConstant, visitParameter
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
visitAnyConstant, visitAnyRefConstant, visitClassConstant, visitDoubleConstant, visitDynamicConstant, visitFloatConstant, visitIntegerConstant, visitInterfaceMethodrefConstant, visitLongConstant, visitMethodHandleConstant, visitMethodrefConstant, visitMethodTypeConstant, visitModuleConstant, visitNameAndTypeConstant, visitPackageConstant, visitPrimitiveArrayConstant, visitStringConstant, visitUtf8Constant
public ReferenceTracingInvocationUnit(SimplifiedInvocationUnit invocationUnit)
invocationUnit
- the invocation unit to which invocations will be delegated.public void enterExceptionHandler(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, int catchType, Stack stack)
InvocationUnit
enterExceptionHandler
in interface InvocationUnit
enterExceptionHandler
in class SimplifiedInvocationUnit
public void invokeMember(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, ConstantInstruction constantInstruction, Stack stack, Variables variables)
InvocationUnit
invokeMember
in interface InvocationUnit
invokeMember
in class SimplifiedInvocationUnit
public Value getExceptionValue(Clazz clazz, ClassConstant catchClassConstant)
SimplifiedInvocationUnit
getExceptionValue
in class SimplifiedInvocationUnit
public void setFieldClassValue(Clazz clazz, FieldrefConstant fieldrefConstant, ReferenceValue value)
SimplifiedInvocationUnit
setFieldClassValue
in class SimplifiedInvocationUnit
public Value getFieldClassValue(Clazz clazz, FieldrefConstant fieldrefConstant, java.lang.String type)
SimplifiedInvocationUnit
getFieldClassValue
in class SimplifiedInvocationUnit
public void setFieldValue(Clazz clazz, FieldrefConstant fieldrefConstant, Value value)
SimplifiedInvocationUnit
setFieldValue
in class SimplifiedInvocationUnit
public Value getFieldValue(Clazz clazz, FieldrefConstant fieldrefConstant, java.lang.String type)
SimplifiedInvocationUnit
getFieldValue
in class SimplifiedInvocationUnit
public void setMethodParameterValue(Clazz clazz, AnyMethodrefConstant anyMethodrefConstant, int parameterIndex, Value value)
SimplifiedInvocationUnit
setMethodParameterValue
in class SimplifiedInvocationUnit
public Value getMethodParameterValue(Clazz clazz, Method method, int parameterIndex, java.lang.String type, Clazz referencedClass)
SimplifiedInvocationUnit
getMethodParameterValue
in class SimplifiedInvocationUnit
public void setMethodReturnValue(Clazz clazz, Method method, Value value)
SimplifiedInvocationUnit
setMethodReturnValue
in class SimplifiedInvocationUnit
public Value getMethodReturnValue(Clazz clazz, AnyMethodrefConstant anyMethodrefConstant, java.lang.String type)
SimplifiedInvocationUnit
getMethodReturnValue
in class SimplifiedInvocationUnit
public Value getMethodReturnValue(Clazz clazz, InvokeDynamicConstant invokeDynamicConstant, java.lang.String type)
SimplifiedInvocationUnit
getMethodReturnValue
in class SimplifiedInvocationUnit
protected Value trace(Value value, int trace)
protected Value trace(Value value, InstructionOffsetValue traceValue)