Package | Description |
---|---|
serp.bytecode |
Bytecode Manipuation
|
serp.bytecode.visitor |
Bytecode Visitor
|
Modifier and Type | Class and 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. |
Modifier and Type | Method and 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 |
TableSwitchInstruction.getDefaultTarget()
Synonymous with
JumpInstruction.getTarget() . |
Instruction |
LookupSwitchInstruction.getDefaultTarget()
Synonymous with
JumpInstruction.getTarget() . |
Instruction |
SwitchInstruction.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[] |
TableSwitchInstruction.getTargets()
Return the targets for this switch, or empty array if not 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 |
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(BCClass type)
Set the type of class being loaded.
|
Instruction |
ClassConstantInstruction.setClass(Class type)
Set the type of class being loaded.
|
Instruction |
ClassConstantInstruction.setClass(String name)
Set the type of class being loaded.
|
Modifier and Type | Method and 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,
BCClass catchType)
Add an exception handler to this code block.
|
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.
|
LineNumber |
LineNumberTable.addLineNumber(Instruction start,
int line)
Add a new line number to this table.
|
TableSwitchInstruction |
TableSwitchInstruction.addTarget(Instruction target)
Add a target to this switch.
|
SwitchInstruction |
SwitchInstruction.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 |
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 |
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 |
StoreInstruction.equalsInstruction(Instruction other)
StoreInstructions are equal if the type they reference the same
type and locals index or if either is unset.
|
boolean |
RetInstruction.equalsInstruction(Instruction other) |
boolean |
Instruction.equalsInstruction(Instruction other)
Instructions are equal if their opcodes are the same.
|
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 |
WideInstruction.equalsInstruction(Instruction other)
WideInstructions are equal if the instruction they augment is the same
or unset.
|
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 |
ConvertInstruction.equalsInstruction(Instruction other)
ConvertInstructions are equal if the types they convert between are
either equal or unset.
|
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 |
IIncInstruction.equalsInstruction(Instruction other) |
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 |
FieldInstruction.equalsInstruction(Instruction other)
FieldInstructions are equal if the field they reference is the same,
or if the field 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.
|
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[] 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 |
JumpInstruction.replaceTarget(Instruction oldTarget,
Instruction newTarget) |
void |
TableSwitchInstruction.replaceTarget(Instruction oldTarget,
Instruction newTarget) |
void |
LineNumberTable.replaceTarget(Instruction oldTarget,
Instruction newTarget) |
void |
LineNumber.replaceTarget(Instruction oldTarget,
Instruction newTarget) |
void |
ExceptionHandler.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 |
InstructionPtr.replaceTarget(Instruction oldTarget,
Instruction newTarget)
Replace the given old, likely invalid, target with a new target.
|
void |
Local.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.
|
TableSwitchInstruction |
TableSwitchInstruction.setDefaultTarget(Instruction ins)
Synonymous with
JumpInstruction.setTarget(serp.bytecode.Instruction) . |
LookupSwitchInstruction |
LookupSwitchInstruction.setDefaultTarget(Instruction ins)
Synonymous with
JumpInstruction.setTarget(serp.bytecode.Instruction) . |
SwitchInstruction |
SwitchInstruction.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.
|
TableSwitchInstruction |
TableSwitchInstruction.setTargets(Instruction[] targets)
Set the jump points for this switch.
|
SwitchInstruction |
SwitchInstruction.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. |
Modifier and Type | Method and Description |
---|---|
void |
BCVisitor.enterInstruction(Instruction obj) |
void |
PrettyPrintVisitor.enterInstruction(Instruction obj) |
void |
BCVisitor.exitInstruction(Instruction obj) |
void |
PrettyPrintVisitor.exitInstruction(Instruction obj) |
Copyright © 2002–2019. All rights reserved.