Interface IInstruction
- All Known Subinterfaces:
IArrayLoadInstruction, IArrayStoreInstruction, IBinaryOpInstruction, IComparisonInstruction, IConditionalBranchInstruction, IConversionInstruction, IGetInstruction, IInstanceofInstruction, IInvokeInstruction, ILoadIndirectInstruction, ILoadInstruction, IPutInstruction, IShiftInstruction, IStoreIndirectInstruction, IStoreInstruction, ITypeTestInstruction, IUnaryOpInstruction
- All Known Implementing Classes:
ArrayLengthInstruction, ArrayLoadInstruction, ArrayStoreInstruction, BinaryOpInstruction, CheckCastInstruction, ComparisonInstruction, ConditionalBranchInstruction, ConstantInstruction, ConversionInstruction, DupInstruction, GetInstruction, GotoInstruction, InstanceofInstruction, Instruction, InvokeDynamicInstruction, InvokeInstruction, LoadInstruction, MonitorInstruction, NewInstruction, PopInstruction, PutInstruction, ReturnInstruction, ShiftInstruction, StoreInstruction, SwapInstruction, SwitchInstruction, ThrowInstruction, UnaryOpInstruction
public interface IInstruction
- Author:
- sfink
Basic functionality we expect of any instruction implementation
-
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic classThis class is used by IInstruction.visit to dispatch based on the instruction type. -
Method Summary
Modifier and TypeMethodDescriptionint[]intgetPushedType(String[] poppedTypesToCheck) Computes the type of data pushed onto the stack, or null if none is pushed.bytebooleanbooleanisPEI()PEI == "Potentially excepting instruction"redirectTargets(int[] targetMap) toString()Subclasses must implement toString.voidApply a Visitor to this instruction.
-
Method Details
-
isFallThrough
boolean isFallThrough()- Returns:
- true if the instruction can "fall through" to the following instruction
-
getBranchTargets
int[] getBranchTargets()- Returns:
- an array containing the labels this instruction can branch to (not including the following instruction if this instruction 'falls through')
-
redirectTargets
- Returns:
- an Instruction equivalent to this one but with any branch labels updated by looking them up in the targetMap array
-
getPoppedCount
int getPoppedCount()- Returns:
- the number of values this instruction pops off the working stack
-
getPushedType
Computes the type of data pushed onto the stack, or null if none is pushed.- Parameters:
poppedTypesToCheck- the types of the data popped off the stack by this instruction; if poppedTypes is null, then we don't know the incoming stack types and the result of this method may be less accurate
-
getPushedWordSize
byte getPushedWordSize()- Returns:
- the JVM word size of the value this instruction pushes onto the stack, or 0 if this instruction doesn't push anything onto the stack.
-
visit
Apply a Visitor to this instruction. We invoke the appropriate Visitor method according to the type of this instruction. -
toString
-
isPEI
boolean isPEI()PEI == "Potentially excepting instruction"- Returns:
- true iff this instruction might throw an exception
-