public class BranchTargetFinder extends java.lang.Object implements AttributeVisitor, InstructionVisitor, ExceptionInfoVisitor, ConstantVisitor
AttributeVisitor
finds all instruction offsets, branch targets, and exception
targets in the CodeAttribute
instances that it visits.Modifier and Type | Field and Description |
---|---|
static int |
NO_SUBROUTINE |
static int |
UNKNOWN |
Constructor and Description |
---|
BranchTargetFinder() |
Modifier and Type | Method and Description |
---|---|
boolean |
containsSubroutines()
Returns whether the method contains subroutines, in the CodeAttribute that was visited most
recently.
|
boolean |
isAfterBranch(int offset)
Returns whether the instruction at the given offset comes right after a definite branch
instruction in the CodeAttribute that was visited most recently.
|
boolean |
isBranchOrigin(int offset)
Returns whether the instruction at the given offset is the origin of a branch instruction in
the CodeAttribute that was visited most recently.
|
boolean |
isBranchTarget(int offset)
Returns whether the instruction at the given offset is the target of a branch instruction in
the CodeAttribute that was visited most recently.
|
boolean |
isCreation(int offset)
Returns whether the instruction at the given offset creates a new, uninitialized object
instance, in the CodeAttribute that was visited most recently.
|
boolean |
isExceptionEnd(int offset)
Returns whether the instruction at the given offset is the end of an exception try block in the
CodeAttribute that was visited most recently.
|
boolean |
isExceptionHandler(int offset)
Returns whether the instruction at the given offset is the start of an exception handler in the
CodeAttribute that was visited most recently.
|
boolean |
isExceptionStart(int offset)
Returns whether the instruction at the given offset is the start of an exception try block in
the CodeAttribute that was visited most recently.
|
boolean |
isInitializer(int offset)
Returns whether the instruction at the given offset is the special invocation of an instance
initializer, in the CodeAttribute that was visited most recently.
|
boolean |
isInstruction(int offset)
Returns whether there is an instruction at the given offset in the CodeAttribute that was
visited most recently.
|
boolean |
isSubroutine(int offset)
Returns whether the instruction at the given offset is part of a subroutine in the
CodeAttribute that was visited most recently.
|
boolean |
isSubroutineInvocation(int offset)
Returns whether the instruction at the given offset is a subroutine invocation in the
CodeAttribute that was visited most recently.
|
boolean |
isSubroutineReturning(int offset)
Returns whether the subroutine at the given offset is ever returning by means of a regular
'ret' instruction.
|
boolean |
isSubroutineStart(int offset)
Returns whether the instruction at the given offset is the start of a subroutine in the
CodeAttribute that was visited most recently.
|
boolean |
isTarget(int offset)
Returns whether the instruction at the given offset is the target of any kind in the
CodeAttribute that was visited most recently.
|
int |
subroutineEnd(int offset)
Returns the offset after the subroutine at the given offset, in the CodeAttribute that was
visited most recently.
|
int |
subroutineStart(int offset)
Returns the start offset of the subroutine at the given offset, in the CodeAttribute that was
visited most recently.
|
void |
visitAnyAttribute(Clazz clazz,
Attribute attribute)
Visits any Attribute instance.
|
void |
visitAnyConstant(Clazz clazz,
Constant constant)
Visits any Constant instance.
|
void |
visitAnySwitchInstruction(Clazz clazz,
Method method,
CodeAttribute codeAttribute,
int offset,
SwitchInstruction switchInstruction)
Visits any SwitchInstruction instance.
|
void |
visitBranchInstruction(Clazz clazz,
Method method,
CodeAttribute codeAttribute,
int offset,
BranchInstruction branchInstruction) |
void |
visitCodeAttribute(Clazz clazz,
Method method,
CodeAttribute codeAttribute) |
void |
visitConstantInstruction(Clazz clazz,
Method method,
CodeAttribute codeAttribute,
int offset,
ConstantInstruction constantInstruction) |
void |
visitExceptionInfo(Clazz clazz,
Method method,
CodeAttribute codeAttribute,
ExceptionInfo exceptionInfo) |
void |
visitMethodrefConstant(Clazz clazz,
MethodrefConstant methodrefConstant) |
void |
visitSimpleInstruction(Clazz clazz,
Method method,
CodeAttribute codeAttribute,
int offset,
SimpleInstruction simpleInstruction) |
void |
visitVariableInstruction(Clazz clazz,
Method method,
CodeAttribute codeAttribute,
int offset,
VariableInstruction variableInstruction) |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
visitAnnotationDefaultAttribute, visitAnyAnnotationsAttribute, visitAnyParameterAnnotationsAttribute, visitAnyTypeAnnotationsAttribute, visitBootstrapMethodsAttribute, visitConstantValueAttribute, visitDeprecatedAttribute, visitDeprecatedAttribute, visitDeprecatedAttribute, visitDeprecatedAttribute, visitEnclosingMethodAttribute, visitExceptionsAttribute, visitInnerClassesAttribute, visitLineNumberTableAttribute, visitLocalVariableTableAttribute, visitLocalVariableTypeTableAttribute, visitMethodParametersAttribute, visitModuleAttribute, visitModuleMainClassAttribute, visitModulePackagesAttribute, visitNestHostAttribute, visitNestMembersAttribute, visitPermittedSubclassesAttribute, visitRecordAttribute, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleParameterAnnotationsAttribute, visitRuntimeInvisibleTypeAnnotationsAttribute, visitRuntimeInvisibleTypeAnnotationsAttribute, visitRuntimeInvisibleTypeAnnotationsAttribute, visitRuntimeInvisibleTypeAnnotationsAttribute, visitRuntimeInvisibleTypeAnnotationsAttribute, visitRuntimeInvisibleTypeAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleParameterAnnotationsAttribute, visitRuntimeVisibleTypeAnnotationsAttribute, visitRuntimeVisibleTypeAnnotationsAttribute, visitRuntimeVisibleTypeAnnotationsAttribute, visitRuntimeVisibleTypeAnnotationsAttribute, visitRuntimeVisibleTypeAnnotationsAttribute, visitRuntimeVisibleTypeAnnotationsAttribute, visitSignatureAttribute, visitSignatureAttribute, visitSignatureAttribute, visitSignatureAttribute, visitSignatureAttribute, visitSourceDebugExtensionAttribute, visitSourceDirAttribute, visitSourceFileAttribute, visitStackMapAttribute, visitStackMapTableAttribute, visitSyntheticAttribute, visitSyntheticAttribute, visitSyntheticAttribute, visitSyntheticAttribute, visitUnknownAttribute
visitAnyInstruction, visitLookUpSwitchInstruction, visitTableSwitchInstruction
visitAnyMethodrefConstant, visitAnyRefConstant, visitClassConstant, visitDoubleConstant, visitDynamicConstant, visitFieldrefConstant, visitFloatConstant, visitIntegerConstant, visitInterfaceMethodrefConstant, visitInvokeDynamicConstant, visitLongConstant, visitMethodHandleConstant, visitMethodTypeConstant, visitModuleConstant, visitNameAndTypeConstant, visitPackageConstant, visitPrimitiveArrayConstant, visitStringConstant, visitUtf8Constant
public static final int UNKNOWN
public static final int NO_SUBROUTINE
public boolean isInstruction(int offset)
public boolean isCreation(int offset)
public boolean isInitializer(int offset)
public boolean isTarget(int offset)
public boolean isBranchOrigin(int offset)
public boolean isBranchTarget(int offset)
public boolean isAfterBranch(int offset)
public boolean isExceptionStart(int offset)
public boolean isExceptionEnd(int offset)
public boolean isExceptionHandler(int offset)
public boolean isSubroutineInvocation(int offset)
public boolean isSubroutineStart(int offset)
public boolean isSubroutine(int offset)
public boolean isSubroutineReturning(int offset)
public int subroutineStart(int offset)
public int subroutineEnd(int offset)
public boolean containsSubroutines()
public void visitAnyAttribute(Clazz clazz, Attribute attribute)
AttributeVisitor
visitAnyAttribute
in interface AttributeVisitor
public void visitCodeAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute)
visitCodeAttribute
in interface AttributeVisitor
public void visitSimpleInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, SimpleInstruction simpleInstruction)
visitSimpleInstruction
in interface InstructionVisitor
public void visitConstantInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, ConstantInstruction constantInstruction)
visitConstantInstruction
in interface InstructionVisitor
public void visitVariableInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, VariableInstruction variableInstruction)
visitVariableInstruction
in interface InstructionVisitor
public void visitBranchInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, BranchInstruction branchInstruction)
visitBranchInstruction
in interface InstructionVisitor
public void visitAnySwitchInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, SwitchInstruction switchInstruction)
InstructionVisitor
visitAnySwitchInstruction
in interface InstructionVisitor
public void visitAnyConstant(Clazz clazz, Constant constant)
ConstantVisitor
visitAnyConstant
in interface ConstantVisitor
public void visitMethodrefConstant(Clazz clazz, MethodrefConstant methodrefConstant)
visitMethodrefConstant
in interface ConstantVisitor
public void visitExceptionInfo(Clazz clazz, Method method, CodeAttribute codeAttribute, ExceptionInfo exceptionInfo)
visitExceptionInfo
in interface ExceptionInfoVisitor