|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.mvel2.asm.tree.analysis.Interpreter<V>
V - type of the Value used for the analysis.public abstract class Interpreter<V extends Value>
A semantic bytecode interpreter. More precisely, this interpreter only
manages the computation of values from other values: it does not manage the
transfer of values to or from the stack, and to or from the local variables.
This separation allows a generic bytecode Analyzer to work with
various semantic interpreters, without needing to duplicate the code to
simulate the transfer of values.
| Field Summary | |
|---|---|
protected int |
api
|
| Constructor Summary | |
|---|---|
protected |
Interpreter(int api)
|
| Method Summary | |
|---|---|
abstract V |
binaryOperation(AbstractInsnNode insn,
V value1,
V value2)
Interprets a bytecode instruction with two arguments. |
abstract V |
copyOperation(AbstractInsnNode insn,
V value)
Interprets a bytecode instruction that moves a value on the stack or to or from local variables. |
abstract V |
merge(V v,
V w)
Merges two values. |
abstract V |
naryOperation(AbstractInsnNode insn,
List<? extends V> values)
Interprets a bytecode instruction with a variable number of arguments. |
abstract V |
newOperation(AbstractInsnNode insn)
Interprets a bytecode instruction without arguments. |
abstract V |
newValue(Type type)
Creates a new value that represents the given type. |
abstract void |
returnOperation(AbstractInsnNode insn,
V value,
V expected)
Interprets a bytecode return instruction. |
abstract V |
ternaryOperation(AbstractInsnNode insn,
V value1,
V value2,
V value3)
Interprets a bytecode instruction with three arguments. |
abstract V |
unaryOperation(AbstractInsnNode insn,
V value)
Interprets a bytecode instruction with a single argument. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
protected final int api
| Constructor Detail |
|---|
protected Interpreter(int api)
| Method Detail |
|---|
public abstract V newValue(Type type)
this), exception
handler variable and with null type for variables reserved
by long and double types.
type - a primitive or reference type, or null to represent
an uninitialized value.
public abstract V newOperation(AbstractInsnNode insn)
throws AnalyzerException
insn - the bytecode instruction to be interpreted.
AnalyzerException - if an error occured during the interpretation.
public abstract V copyOperation(AbstractInsnNode insn,
V value)
throws AnalyzerException
insn - the bytecode instruction to be interpreted.value - the value that must be moved by the instruction.
AnalyzerException - if an error occured during the interpretation.
public abstract V unaryOperation(AbstractInsnNode insn,
V value)
throws AnalyzerException
insn - the bytecode instruction to be interpreted.value - the argument of the instruction to be interpreted.
AnalyzerException - if an error occured during the interpretation.
public abstract V binaryOperation(AbstractInsnNode insn,
V value1,
V value2)
throws AnalyzerException
insn - the bytecode instruction to be interpreted.value1 - the first argument of the instruction to be interpreted.value2 - the second argument of the instruction to be interpreted.
AnalyzerException - if an error occured during the interpretation.
public abstract V ternaryOperation(AbstractInsnNode insn,
V value1,
V value2,
V value3)
throws AnalyzerException
insn - the bytecode instruction to be interpreted.value1 - the first argument of the instruction to be interpreted.value2 - the second argument of the instruction to be interpreted.value3 - the third argument of the instruction to be interpreted.
AnalyzerException - if an error occured during the interpretation.
public abstract V naryOperation(AbstractInsnNode insn,
List<? extends V> values)
throws AnalyzerException
insn - the bytecode instruction to be interpreted.values - the arguments of the instruction to be interpreted.
AnalyzerException - if an error occured during the interpretation.
public abstract void returnOperation(AbstractInsnNode insn,
V value,
V expected)
throws AnalyzerException
insn - the bytecode instruction to be interpreted.value - the argument of the instruction to be interpreted.expected - the expected return type of the analyzed method.
AnalyzerException - if an error occured during the interpretation.
public abstract V merge(V v,
V w)
v - a value.w - another value.
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||