# Uses of Class
serp.bytecode.Instruction

Packages that use Instruction
Package
Description
serp.bytecode
Bytecode Manipuation
serp.bytecode.visitor
Bytecode Visitor

## Uses of Instruction in serp.bytecode

Subclasses of Instruction in serp.bytecode
Modifier and Type
Class
Description
`class`
`ArrayInstruction`
Any array load or store instruction.
`class`
`ArrayLoadInstruction`
Loads a value from an array onto the stack.
`class`
`ArrayStoreInstruction`
Store a value from the stack into an array.
`class`
`ClassInstruction`
An instruction that takes as an argument a class to operate on.
`class`
`CmpInstruction`
An instruction comparing two stack values.
`class`
`ConstantInstruction`
An instruction that that loads a constant onto the stack.
`class`
`ConvertInstruction`
A conversion opcode such as `i2l, f2i`, etc.
`class`
`FieldInstruction`
Instruction that takes as an argument a field to operate on.
`class`
`GetFieldInstruction`
Loads a value from a field onto the stack.
`class`
`GotoInstruction`
An instruction that specifies a position in the code block to jump to.
`class`
`IfInstruction`
An if instruction such as `ifnull, ifeq`, etc.
`class`
`IIncInstruction`
The `iinc` instruction.
`class`
`JumpInstruction`
An instruction that specifies a position in the code block to jump to.
`class`
`LoadInstruction`
Loads a value from the locals table to the stack.
`class`
`LocalVariableInstruction`
An instruction that has an argument of an index into the local variable table of the current frame.
`class`
`LookupSwitchInstruction`
The `lookupswitch` instruction.
`class`
`MathInstruction`
One of the math operations defined in the `Constants` interface.
`class`
`MethodInstruction`
An instruction that invokes a method.
`class`
`MonitorEnterInstruction`
The `monitorenter` instruction.
`class`
`MonitorExitInstruction`
The `monitorexit` instruction.
`class`
`MonitorInstruction`
A synchronization instruction.
`class`
`MultiANewArrayInstruction`
The `multianewarray` instruction, which creates a new multi-dimensional array.
`class`
`NewArrayInstruction`
The `newarray` instruction, which is used to create new arrays of primitive types.
`class`
`PutFieldInstruction`
Stores a value from the stack into a field.
`class`
`RetInstruction`
The `ret` instruction is used in the implementation of finally.
`class`
`ReturnInstruction`
Returns a value (or void) from a method.
`class`
`StackInstruction`
Represents an instruction that manipulates the stack of the current frame.
`class`
`StoreInstruction`
An instruction to store a value from a local variable onto the stack.
`class`
`SwitchInstruction`
Contains functionality common to the different switch types (TableSwitch and LookupSwitch).
`class`
`TableSwitchInstruction`
The `tableswitch` instruction.
`class`
`TypedInstruction`
Any typed instruction.
`class`
`WideInstruction`
The `wide` instruction, which is used to allow other instructions to index values beyond what they can normally index baed on the length of their arguments.
Methods in serp.bytecode that return Instruction
Modifier and Type
Method
Description
`Instruction`
Code.`add(Instruction ins)`
Adds a copy of the given instruction.
`Instruction`
Code.`arraylength()`
Get the length of an array on the stack; the `arraylength` opcode.
`Instruction`
Code.`athrow()`
Throw an exception; the `athrow` opcode.
`Instruction`
LookupSwitchInstruction.`getDefaultTarget()`
Synonymous with `JumpInstruction.getTarget()`.
`Instruction`
SwitchInstruction.`getDefaultTarget()`
Synonymous with `JumpInstruction.getTarget()`.
`Instruction`
TableSwitchInstruction.`getDefaultTarget()`
Synonymous with `JumpInstruction.getTarget()`.
`Instruction`
Local.`getEnd()`
The last `Instruction` for which this local is in scope.
`Instruction`
ExceptionHandler.`getHandlerStart()`
Return the instruction marking the beginning of the catch {} block.
`Instruction[]`
Code.`getInstructions()`
Return all the Instructions of this method.
`Instruction`
LineNumber.`getStart()`
Return the instruction marking the beginning of this line.
`Instruction`
Local.`getStart()`
Return the instruction marking the beginning of this local.
`Instruction`
JumpInstruction.`getTarget()`
Get the current target instruction to jump to, if it has been set.
`Instruction[]`
LookupSwitchInstruction.`getTargets()`
Return the targets of the case statements for this switch.
`Instruction[]`
SwitchInstruction.`getTargets()`
Return the targets for this switch, or empty array if not set.
`Instruction[]`
TableSwitchInstruction.`getTargets()`
Return the targets for this switch, or empty array if not set.
`Instruction`
ExceptionHandler.`getTryEnd()`
Return the instruction at the end of the try {} block.
`Instruction`
ExceptionHandler.`getTryStart()`
Return the instruction marking the beginning of the try {} block.
`Instruction`
Code.`next()`
Return the next instruction.
`Instruction`
Code.`nop()`
Add the `nop` opcode.
`Instruction`
Code.`previous()`
Return the previous instruction.
`Instruction`
Code.`set(Instruction ins)`
Replaces the last iterated instruction with a copy of the given one.
`Instruction`
ClassConstantInstruction.`setClass(Class type)`
Set the type of class being loaded.
`Instruction`
ClassConstantInstruction.`setClass(String name)`
Set the type of class being loaded.
`Instruction`
ClassConstantInstruction.`setClass(BCClass type)`
Set the type of class being loaded.
Methods in serp.bytecode with parameters of type Instruction
Modifier and Type
Method
Description
`Instruction`
Code.`add(Instruction ins)`
Adds a copy of the given instruction.
`LookupSwitchInstruction`
LookupSwitchInstruction.`addCase(int match, Instruction target)`
Add a case to this switch.
`SwitchInstruction`
SwitchInstruction.`addCase(int match, Instruction target)`
Add a case to this switch.
`ExceptionHandler`
Code.`addExceptionHandler(Instruction tryStart, Instruction tryEnd, Instruction handlerStart, Class catchType)`
Add an exception handler to this code block.
`ExceptionHandler`
Code.`addExceptionHandler(Instruction tryStart, Instruction tryEnd, Instruction handlerStart, String catchType)`
Add an exception handler to this code block.
`ExceptionHandler`
Code.`addExceptionHandler(Instruction tryStart, Instruction tryEnd, Instruction handlerStart, BCClass catchType)`
Add an exception handler to this code block.
`LineNumber`
LineNumberTable.`addLineNumber(Instruction start, int line)`
Add a new line number to this table.
`SwitchInstruction`
SwitchInstruction.`addTarget(Instruction target)`
Add a target to this switch.
`TableSwitchInstruction`
TableSwitchInstruction.`addTarget(Instruction target)`
Add a target to this switch.
`void`
Code.`after(Instruction ins)`
Position the iterator just after the given instruction.
`void`
Code.`before(Instruction ins)`
Position the iterator just before the given instruction.
`boolean`
ClassInstruction.`equalsInstruction(Instruction other)`
ClassInstructions are equal if the type they reference is the same or unset and if their opcodes are equal.
`boolean`
ConstantInstruction.`equalsInstruction(Instruction other)`
ConstantInstructions are equal if the const they reference is the same, or if the const of either is unset.
`boolean`
ConvertInstruction.`equalsInstruction(Instruction other)`
ConvertInstructions are equal if the types they convert between are either equal or unset.
`boolean`
FieldInstruction.`equalsInstruction(Instruction other)`
FieldInstructions are equal if the field they reference is the same, or if the field of either is unset.
`boolean`
IIncInstruction.`equalsInstruction(Instruction other)`
`boolean`
Instruction.`equalsInstruction(Instruction other)`
Instructions are equal if their opcodes are the same.
`boolean`
JumpInstruction.`equalsInstruction(Instruction other)`
JumpInstructions are equal if they represent the same operation and the instruction they jump to is the same, or if the jump Instruction of either is unset.
`boolean`
LoadInstruction.`equalsInstruction(Instruction other)`
LoadInstructions are equal if the type they reference the same type and locals index or if either is unset.
`boolean`
LocalVariableInstruction.`equalsInstruction(Instruction other)`
Two local variable instructions are equal if the local index they reference is equal or if either index is 0/unset.
`boolean`
MathInstruction.`equalsInstruction(Instruction other)`
MathInstructions are equal if they have the same operation and type, or the operation and type of either is unset.
`boolean`
MethodInstruction.`equalsInstruction(Instruction other)`
MethodInstructions are equal if the method they reference is the same, or if the method of either is unset.
`boolean`
MultiANewArrayInstruction.`equalsInstruction(Instruction other)`
Two MultiANewArray instructions are equal if they have the same type and dimensions, or if the type and dimensions of either is unset.
`boolean`
NewArrayInstruction.`equalsInstruction(Instruction other)`
NewArray instructions are equal if the array type is the same, of if the array type of either is unset.
`boolean`
RetInstruction.`equalsInstruction(Instruction other)`
`boolean`
StoreInstruction.`equalsInstruction(Instruction other)`
StoreInstructions are equal if the type they reference the same type and locals index or if either is unset.
`boolean`
WideInstruction.`equalsInstruction(Instruction other)`
WideInstructions are equal if the instruction they augment is the same or unset.
`LineNumber`
LineNumberTable.`getLineNumber(Instruction ins)`
Return the line number for the given instruction, or null if none.
`boolean`
LineNumberTable.`removeLineNumber(Instruction ins)`
Remove the line number for the given instruction.
`int`
Code.`replace(Instruction[] templates, Instruction[] with)`
Equivalent to looping over each given template/replacement pair and calling `Code.replace(Instruction,Instruction)` for each.
`int`
Code.`replace(Instruction template, Instruction with)`
Replaces all the instructions in this code block that match the given template with the given instruction.
`void`
ExceptionHandler.`replaceTarget(Instruction oldTarget, Instruction newTarget)`
`void`
InstructionPtr.`replaceTarget(Instruction oldTarget, Instruction newTarget)`
Replace the given old, likely invalid, target with a new target.
`void`
JumpInstruction.`replaceTarget(Instruction oldTarget, Instruction newTarget)`
`void`
LineNumber.`replaceTarget(Instruction oldTarget, Instruction newTarget)`
`void`
LineNumberTable.`replaceTarget(Instruction oldTarget, Instruction newTarget)`
`void`
Local.`replaceTarget(Instruction oldTarget, Instruction newTarget)`
`void`
LocalTable.`replaceTarget(Instruction oldTarget, Instruction newTarget)`
`void`
LookupSwitchInstruction.`replaceTarget(Instruction oldTarget, Instruction newTarget)`
`void`
SwitchInstruction.`replaceTarget(Instruction oldTarget, Instruction newTarget)`
`void`
TableSwitchInstruction.`replaceTarget(Instruction oldTarget, Instruction newTarget)`
`boolean`
Code.`searchBackward(Instruction template)`
Find the closest previous instruction from the current iterator position that matches the given one, according to the `Object.equals(java.lang.Object)` methods of the instruction types.
`boolean`
Code.`searchForward(Instruction template)`
Find the next instruction from the current iterator position that matches the given one, according to the `Object.equals(java.lang.Object)` methods of the instruction types.
`Instruction`
Code.`set(Instruction ins)`
Replaces the last iterated instruction with a copy of the given one.
`LookupSwitchInstruction`
LookupSwitchInstruction.`setCases(int[] matches, Instruction[] targets)`
Set the match-jumppt pairs for this switch.
`SwitchInstruction`
SwitchInstruction.`setCases(int[] matches, Instruction[] targets)`
Set the match-jumppt pairs for this switch.
`LookupSwitchInstruction`
LookupSwitchInstruction.`setDefaultTarget(Instruction ins)`
Synonymous with `JumpInstruction.setTarget(serp.bytecode.Instruction)`.
`SwitchInstruction`
SwitchInstruction.`setDefaultTarget(Instruction ins)`
Synonymous with `JumpInstruction.setTarget(serp.bytecode.Instruction)`.
`TableSwitchInstruction`
TableSwitchInstruction.`setDefaultTarget(Instruction ins)`
Synonymous with `JumpInstruction.setTarget(serp.bytecode.Instruction)`.
`void`
Local.`setEnd(Instruction end)`
Set the last `Instruction` for which this local is in scope.
`void`
ExceptionHandler.`setHandlerStart(Instruction instruction)`
Set the `Instruction` marking the beginning of the catch block.
`WideInstruction`
WideInstruction.`setInstruction(Instruction ins)`
Set the type of instruction this wide instruction modifies.
`void`
LineNumber.`setStart(Instruction instruction)`
Set the `Instruction` marking the beginning this line.
`void`
Local.`setStart(Instruction instruction)`
Set the `Instruction` marking the beginning this local.
`JumpInstruction`
JumpInstruction.`setTarget(Instruction instruction)`
Set the instruction to jump to; the instruction must already be added to the code block.
`SwitchInstruction`
SwitchInstruction.`setTargets(Instruction[] targets)`
Set the jump points for this switch.
`TableSwitchInstruction`
TableSwitchInstruction.`setTargets(Instruction[] targets)`
Set the jump points for this switch.
`void`
ExceptionHandler.`setTryEnd(Instruction instruction)`
Set the Instruction at the end of the try block.
`void`
ExceptionHandler.`setTryStart(Instruction instruction)`
Set the `Instruction` marking the beginning of the try block.

## Uses of Instruction in serp.bytecode.visitor

Methods in serp.bytecode.visitor with parameters of type Instruction
Modifier and Type
Method
Description
`void`
BCVisitor.`enterInstruction(Instruction obj)`
`void`
PrettyPrintVisitor.`enterInstruction(Instruction obj)`
`void`
BCVisitor.`exitInstruction(Instruction obj)`
`void`
PrettyPrintVisitor.`exitInstruction(Instruction obj)`