public abstract class DismantleBytecode extends AnnotationVisitor
Modifier and Type | Field and Description |
---|---|
protected byte[] |
codeBytes |
protected org.apache.bcel.classfile.LineNumberTable |
lineNumberTable |
static byte |
M_BR |
static byte |
M_CP |
static byte |
M_INT
Meaning of bytecode operands
|
static byte |
M_PAD |
static byte |
M_R |
static byte |
M_UINT |
AALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_SYPER, ACC_TRANSIENT, ACC_VARARGS, ACC_VOLATILE, ACCESS_NAMES, ACONST_NULL, ALOAD, ALOAD_0, ALOAD_1, ALOAD_2, ALOAD_3, ANEWARRAY, ANEWARRAY_QUICK, APPEND_FRAME, APPEND_FRAME_MAX, ARETURN, ARRAYLENGTH, ASTORE, ASTORE_0, ASTORE_1, ASTORE_2, ASTORE_3, ATHROW, ATTR_ANNOTATION_DEFAULT, ATTR_CODE, ATTR_CONSTANT_VALUE, ATTR_DEPRECATED, ATTR_ENCLOSING_METHOD, ATTR_EXCEPTIONS, ATTR_INNER_CLASSES, ATTR_LINE_NUMBER_TABLE, ATTR_LOCAL_VARIABLE_TABLE, ATTR_LOCAL_VARIABLE_TYPE_TABLE, ATTR_PMG, ATTR_RUNTIME_VISIBLE_ANNOTATIONS, ATTR_RUNTIME_VISIBLE_PARAMETER_ANNOTATIONS, ATTR_RUNTIMEIN_VISIBLE_ANNOTATIONS, ATTR_RUNTIMEIN_VISIBLE_PARAMETER_ANNOTATIONS, ATTR_SIGNATURE, ATTR_SOURCE_FILE, ATTR_STACK_MAP, ATTR_STACK_MAP_TABLE, ATTR_SYNTHETIC, ATTR_UNKNOWN, ATTRIBUTE_NAMES, BALOAD, BASTORE, BIPUSH, BREAKPOINT, CALOAD, CASTORE, CHECKCAST, CHECKCAST_QUICK, CHOP_FRAME, CHOP_FRAME_MAX, CLASS_TYPE_NAMES, CONSTANT_Class, CONSTANT_Double, CONSTANT_Fieldref, CONSTANT_Float, CONSTANT_Integer, CONSTANT_InterfaceMethodref, CONSTANT_InvokeDynamic, CONSTANT_Long, CONSTANT_MethodHandle, CONSTANT_Methodref, CONSTANT_MethodType, CONSTANT_NameAndType, CONSTANT_NAMES, CONSTANT_String, CONSTANT_Utf8, CONSTRUCTOR_NAME, CONSUME_STACK, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DLOAD_0, DLOAD_1, DLOAD_2, DLOAD_3, DMUL, DNEG, DREM, DRETURN, DSTORE, DSTORE_0, DSTORE_1, DSTORE_2, DSTORE_3, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAD_0, FLOAD_1, FLOAD_2, FLOAD_3, FMUL, FNEG, FREM, FRETURN, FSTORE, FSTORE_0, FSTORE_1, FSTORE_2, FSTORE_3, FSUB, FULL_FRAME, GETFIELD, GETFIELD_QUICK, GETFIELD_QUICK_W, GETFIELD2_QUICK, GETSTATIC, GETSTATIC_QUICK, GETSTATIC2_QUICK, GOTO, GOTO_W, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IINC, ILLEGAL_OPCODE, ILLEGAL_TYPE, ILOAD, ILOAD_0, ILOAD_1, ILOAD_2, ILOAD_3, IMPDEP1, IMPDEP2, IMUL, INEG, INSTANCEOF, INSTANCEOF_QUICK, INT2BYTE, INT2CHAR, INT2SHORT, INTERFACES_IMPLEMENTED_BY_ARRAYS, INVOKEDYNAMIC, INVOKEINTERFACE, INVOKEINTERFACE_QUICK, INVOKENONVIRTUAL, INVOKENONVIRTUAL_QUICK, INVOKESPECIAL, INVOKESTATIC, INVOKESTATIC_QUICK, INVOKESUPER_QUICK, INVOKEVIRTUAL, INVOKEVIRTUAL_QUICK, INVOKEVIRTUAL_QUICK_W, INVOKEVIRTUALOBJECT_QUICK, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISTORE_0, ISTORE_1, ISTORE_2, ISTORE_3, ISUB, ITEM_Bogus, ITEM_Double, ITEM_Float, ITEM_InitObject, ITEM_Integer, ITEM_Long, ITEM_NAMES, ITEM_NewObject, ITEM_Null, ITEM_Object, IUSHR, IXOR, JSR, JSR_W, KNOWN_ATTRIBUTES, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDC_QUICK, LDC_W, LDC_W_QUICK, LDC2_W, LDC2_W_QUICK, LDIV, LLOAD, LLOAD_0, LLOAD_1, LLOAD_2, LLOAD_3, LMUL, LNEG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSTORE_0, LSTORE_1, LSTORE_2, LSTORE_3, LSUB, LUSHR, LXOR, MAJOR, MAJOR_1_1, MAJOR_1_2, MAJOR_1_3, MAJOR_1_4, MAJOR_1_5, MAJOR_1_6, MAJOR_1_7, MAJOR_1_8, MAX_ACC_FLAG, MAX_BYTE, MAX_CODE_SIZE, MAX_CP_ENTRIES, MAX_SHORT, MINOR, MINOR_1_1, MINOR_1_2, MINOR_1_3, MINOR_1_4, MINOR_1_5, MINOR_1_6, MINOR_1_7, MINOR_1_8, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, MULTIANEWARRAY_QUICK, NEW, NEW_QUICK, NEWARRAY, NO_OF_OPERANDS, NOP, OPCODE_NAMES, POP, POP2, PRODUCE_STACK, PUSH, PUTFIELD, PUTFIELD_QUICK, PUTFIELD_QUICK_W, PUTFIELD2_QUICK, PUTSTATIC, PUTSTATIC_QUICK, PUTSTATIC2_QUICK, RESERVED, RET, RETURN, SALOAD, SAME_FRAME, SAME_FRAME_EXTENDED, SAME_FRAME_MAX, SAME_LOCALS_1_STACK_ITEM_FRAME, SAME_LOCALS_1_STACK_ITEM_FRAME_EXTENDED, SAME_LOCALS_1_STACK_ITEM_FRAME_MAX, SASTORE, SHORT_TYPE_NAMES, SIPUSH, STATIC_INITIALIZER_NAME, SWAP, SWITCH, T_ADDRESS, T_ARRAY, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_OBJECT, T_REFERENCE, T_SHORT, T_UNKNOWN, T_VOID, TABLESWITCH, TYPE_NAMES, TYPE_OF_OPERANDS, UNDEFINED, UNPREDICTABLE, WIDE
Constructor and Description |
---|
DismantleBytecode() |
Modifier and Type | Method and Description |
---|---|
void |
afterOpcode(int seen) |
static boolean |
areOppositeBranches(int opcode1,
int opcode2) |
boolean |
atCatchBlock() |
boolean |
beforeOpcode(int seen)
return false if we should skip calling sawOpcode
|
int |
getBranchFallThrough() |
int |
getBranchOffset() |
int |
getBranchTarget() |
java.lang.String |
getClassConstantOperand()
If the current opcode has a class constant operand, get the classname,
slash-formatted.
|
ClassDescriptor |
getClassDescriptorOperand() |
int |
getCodeByte(int offset) |
org.apache.bcel.classfile.Constant |
getConstantRefOperand() |
int |
getDefaultSwitchOffset() |
java.lang.String |
getDottedClassConstantOperand()
If the current opcode has a class operand, get the associated class
constant, dot-formatted
|
FieldDescriptor |
getFieldDescriptorOperand() |
int |
getIntConstant() |
long |
getLongConstant() |
int |
getMaxPC() |
MethodDescriptor |
getMethodDescriptorOperand() |
java.lang.String |
getNameConstantOperand()
If the current opcode has a reference constant operand, get its name
|
int |
getNextCodeByte(int offset) |
int |
getNextOpcode() |
int |
getNextPC() |
int |
getOpcode() |
int |
getPC() |
int |
getPrevOpcode(int offset)
return previous opcode;
|
java.lang.String |
getRefConstantOperand()
Deprecated.
|
boolean |
getRefFieldIsStatic() |
int |
getRegisterOperand() |
java.lang.String |
getSigConstantOperand()
If the current opcode has a reference constant operand, get its
signature, slash-formatted
|
java.lang.String |
getStringConstantOperand()
If the current opcode has a string constant operand, get its name
|
int[] |
getSwitchLabels() |
int[] |
getSwitchOffsets() |
XClass |
getXClassOperand() |
XField |
getXFieldOperand() |
XMethod |
getXMethodOperand() |
static boolean |
isBranch(int opcode)
Return whether or not given opcode is a branch instruction.
|
boolean |
isMethodCall() |
boolean |
isRegisterLoad() |
boolean |
isRegisterStore() |
boolean |
isRegisterStore(int opcode) |
boolean |
isReturn(int opcode) |
boolean |
isShift(int opcode) |
static boolean |
isSwitch(int opcode)
Return whether or not given opcode is a switch instruction.
|
boolean |
isWideOpcode() |
void |
printOpCode(int seen) |
void |
sawBranchTo(int targetPC) |
void |
sawClass() |
void |
sawDouble(double seen) |
void |
sawField() |
void |
sawFloat(float seen) |
void |
sawIMethod() |
void |
sawInt(int seen) |
void |
sawLong(long seen) |
void |
sawMethod() |
void |
sawOpcode(int seen) |
void |
sawRegister(int r) |
void |
sawString(java.lang.String seen) |
void |
visit(org.apache.bcel.classfile.Code obj) |
getAnnotationParameterAsString, getAnnotationParameterAsStringArray, visitAnnotation, visitAnnotation, visitParameterAnnotation, visitParameterAnnotation, visitSyntheticParameterAnnotation
amVisitingMainMethod, asUnsignedByte, doVisitMethod, getClassDescriptor, getClassName, getCode, getConstantPool, getDottedClassName, getDottedFieldSig, getDottedMethodSig, getDottedSuperclassName, getField, getFieldDescriptor, getFieldIsStatic, getFieldName, getFieldSig, getFullyQualifiedFieldName, getFullyQualifiedMethodName, getMethod, getMethodDescriptor, getMethodName, getMethodSig, getMethodVisitOrder, getNumberArguments, getNumberMethodArguments, getPackageName, getSizeOfSurroundingTryBlock, getSizeOfSurroundingTryBlock, getSourceFile, getStringFromIndex, getSuperclassName, getSurroundingCaughtExceptions, getSurroundingCaughtExceptions, getSurroundingTryBlock, getSurroundingTryBlock, getThisClass, getXClass, getXField, getXMethod, hasInterestingClass, hasInterestingMethod, isVisitMethodsInCallOrder, setupVisitorForClass, setVisitMethodsInCallOrder, shouldVisit, toString, visitAfter, visitAfter, visitAnnotationDefault, visitAnnotationEntry, visitCode, visitConstantPool, visitEnclosingMethod, visitingField, visitingMethod, visitInnerClasses, visitJavaClass, visitLineNumberTable, visitLocalVariableTable, visitStackMapTable, visitStackMapTableEntry
clone, report, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visitCodeException, visitConstantClass, visitConstantDouble, visitConstantFieldref, visitConstantFloat, visitConstantInteger, visitConstantInterfaceMethodref, visitConstantLong, visitConstantMethodref, visitConstantNameAndType, visitConstantString, visitConstantUtf8, visitConstantValue, visitDeprecated, visitExceptionTable, visitField, visitInnerClass, visitLineNumber, visitLocalVariable, visitLocalVariableTypeTable, visitMethod, visitSignature, visitSourceFile, visitStackMap, visitStackMapEntry, visitSynthetic, visitUnknown
public static final byte M_INT
public static final byte M_UINT
public static final byte M_CP
public static final byte M_R
public static final byte M_BR
public static final byte M_PAD
protected byte[] codeBytes
protected org.apache.bcel.classfile.LineNumberTable lineNumberTable
public ClassDescriptor getClassDescriptorOperand()
@CheckForNull public XClass getXClassOperand()
public boolean isMethodCall()
public MethodDescriptor getMethodDescriptorOperand()
@CheckForNull public XMethod getXMethodOperand()
public FieldDescriptor getFieldDescriptorOperand()
@CheckForNull public XField getXFieldOperand()
public java.lang.String getDottedClassConstantOperand()
@Deprecated public java.lang.String getRefConstantOperand()
public java.lang.String getNameConstantOperand()
public java.lang.String getSigConstantOperand()
@SlashedClassName public java.lang.String getClassConstantOperand()
public java.lang.String getStringConstantOperand()
public org.apache.bcel.classfile.Constant getConstantRefOperand()
public boolean isRegisterLoad()
public boolean isRegisterStore()
public int getRegisterOperand()
public int getIntConstant()
public long getLongConstant()
public int getBranchOffset()
public int getBranchTarget()
public int getBranchFallThrough()
public int getDefaultSwitchOffset()
public boolean getRefFieldIsStatic()
public int getPC()
public int getPrevOpcode(int offset)
offset
- 0 for current opcode, 1 for one before that, etc.public boolean isWideOpcode()
public static boolean isBranch(int opcode)
opcode
- the opcodepublic static boolean isSwitch(int opcode)
opcode
- the opcodepublic int[] getSwitchOffsets()
public int[] getSwitchLabels()
public int getMaxPC()
public int getCodeByte(int offset)
public int getOpcode()
public boolean atCatchBlock()
public void visit(org.apache.bcel.classfile.Code obj)
visit
in class BetterVisitor
public void sawDouble(double seen)
public void sawFloat(float seen)
public void sawRegister(int r)
public void sawInt(int seen)
public void sawLong(long seen)
public void sawBranchTo(int targetPC)
public boolean beforeOpcode(int seen)
public void afterOpcode(int seen)
public void sawOpcode(int seen)
public void sawString(java.lang.String seen)
public void sawField()
public void sawMethod()
public void sawIMethod()
public void sawClass()
public void printOpCode(int seen)
public int getNextPC()
public int getNextOpcode()
public int getNextCodeByte(int offset)
public boolean isReturn(int opcode)
public boolean isShift(int opcode)
public static boolean areOppositeBranches(int opcode1, int opcode2)
public boolean isRegisterStore(int opcode)
FindBugs™ is licenced under the LGPL. Copyright © 2006 University of Maryland.