Package proguard.classfile.instruction
Class ConstantInstruction
- java.lang.Object
-
- proguard.classfile.instruction.Instruction
-
- proguard.classfile.instruction.ConstantInstruction
-
- All Implemented Interfaces:
ConstantVisitor
public class ConstantInstruction extends Instruction implements ConstantVisitor
ThisInstructionrepresents an instruction that refers to an entry in the constant pool.
-
-
Field Summary
Fields Modifier and Type Field Description intconstantintconstantIndex-
Fields inherited from class proguard.classfile.instruction.Instruction
ARRAY_T_BOOLEAN, ARRAY_T_BYTE, ARRAY_T_CHAR, ARRAY_T_DOUBLE, ARRAY_T_FLOAT, ARRAY_T_INT, ARRAY_T_LONG, ARRAY_T_SHORT, NAMES, OP_AALOAD, OP_AASTORE, OP_ACONST_NULL, OP_ALOAD, OP_ALOAD_0, OP_ALOAD_1, OP_ALOAD_2, OP_ALOAD_3, OP_ANEWARRAY, OP_ARETURN, OP_ARRAYLENGTH, OP_ASTORE, OP_ASTORE_0, OP_ASTORE_1, OP_ASTORE_2, OP_ASTORE_3, OP_ATHROW, OP_BALOAD, OP_BASTORE, OP_BIPUSH, OP_CALOAD, OP_CASTORE, OP_CHECKCAST, OP_D2F, OP_D2I, OP_D2L, OP_DADD, OP_DALOAD, OP_DASTORE, OP_DCMPG, OP_DCMPL, OP_DCONST_0, OP_DCONST_1, OP_DDIV, OP_DLOAD, OP_DLOAD_0, OP_DLOAD_1, OP_DLOAD_2, OP_DLOAD_3, OP_DMUL, OP_DNEG, OP_DREM, OP_DRETURN, OP_DSTORE, OP_DSTORE_0, OP_DSTORE_1, OP_DSTORE_2, OP_DSTORE_3, OP_DSUB, OP_DUP, OP_DUP_X1, OP_DUP_X2, OP_DUP2, OP_DUP2_X1, OP_DUP2_X2, OP_F2D, OP_F2I, OP_F2L, OP_FADD, OP_FALOAD, OP_FASTORE, OP_FCMPG, OP_FCMPL, OP_FCONST_0, OP_FCONST_1, OP_FCONST_2, OP_FDIV, OP_FLOAD, OP_FLOAD_0, OP_FLOAD_1, OP_FLOAD_2, OP_FLOAD_3, OP_FMUL, OP_FNEG, OP_FREM, OP_FRETURN, OP_FSTORE, OP_FSTORE_0, OP_FSTORE_1, OP_FSTORE_2, OP_FSTORE_3, OP_FSUB, OP_GETFIELD, OP_GETSTATIC, OP_GOTO, OP_GOTO_W, OP_I2B, OP_I2C, OP_I2D, OP_I2F, OP_I2L, OP_I2S, OP_IADD, OP_IALOAD, OP_IAND, OP_IASTORE, OP_ICONST_0, OP_ICONST_1, OP_ICONST_2, OP_ICONST_3, OP_ICONST_4, OP_ICONST_5, OP_ICONST_M1, OP_IDIV, OP_IFACMPEQ, OP_IFACMPNE, OP_IFEQ, OP_IFGE, OP_IFGT, OP_IFICMPEQ, OP_IFICMPGE, OP_IFICMPGT, OP_IFICMPLE, OP_IFICMPLT, OP_IFICMPNE, OP_IFLE, OP_IFLT, OP_IFNE, OP_IFNONNULL, OP_IFNULL, OP_IINC, OP_ILOAD, OP_ILOAD_0, OP_ILOAD_1, OP_ILOAD_2, OP_ILOAD_3, OP_IMUL, OP_INEG, OP_INSTANCEOF, OP_INVOKEDYNAMIC, OP_INVOKEINTERFACE, OP_INVOKESPECIAL, OP_INVOKESTATIC, OP_INVOKEVIRTUAL, OP_IOR, OP_IREM, OP_IRETURN, OP_ISHL, OP_ISHR, OP_ISTORE, OP_ISTORE_0, OP_ISTORE_1, OP_ISTORE_2, OP_ISTORE_3, OP_ISUB, OP_IUSHR, OP_IXOR, OP_JSR, OP_JSR_W, OP_L2D, OP_L2F, OP_L2I, OP_LADD, OP_LALOAD, OP_LAND, OP_LASTORE, OP_LCMP, OP_LCONST_0, OP_LCONST_1, OP_LDC, OP_LDC_W, OP_LDC2_W, OP_LDIV, OP_LLOAD, OP_LLOAD_0, OP_LLOAD_1, OP_LLOAD_2, OP_LLOAD_3, OP_LMUL, OP_LNEG, OP_LOOKUPSWITCH, OP_LOR, OP_LREM, OP_LRETURN, OP_LSHL, OP_LSHR, OP_LSTORE, OP_LSTORE_0, OP_LSTORE_1, OP_LSTORE_2, OP_LSTORE_3, OP_LSUB, OP_LUSHR, OP_LXOR, OP_MONITORENTER, OP_MONITOREXIT, OP_MULTIANEWARRAY, OP_NEW, OP_NEWARRAY, OP_NOP, OP_POP, OP_POP2, OP_PUTFIELD, OP_PUTSTATIC, OP_RET, OP_RETURN, OP_SALOAD, OP_SASTORE, OP_SIPUSH, OP_SWAP, OP_TABLESWITCH, OP_WIDE, opcode
-
-
Constructor Summary
Constructors Constructor Description ConstantInstruction()Creates an uninitialized ConstantInstruction.ConstantInstruction(byte opcode, int constantIndex)Creates a new ConstantInstruction with the given opcode and constant pool index.ConstantInstruction(byte opcode, int constantIndex, int constant)Creates a new ConstantInstruction with the given opcode, constant pool index, and constant.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaccept(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, InstructionVisitor instructionVisitor)Accepts the given visitor.bytecanonicalOpcode()Returns the canonical opcode of this instruction, i.e.ConstantInstructioncopy(ConstantInstruction constantInstruction)Copies the given instruction into this instruction.booleanequals(java.lang.Object o)inthashCode()intlength(int offset)Returns the length in bytes of the instruction.booleanmayInstanceThrowExceptions(Clazz clazz)Returns whether a particular instance of an instruction may throw an exception.protected voidreadInfo(byte[] code, int offset)Reads the data following the instruction opcode.Instructionshrink()Shrinks this instruction to its shortest possible form.intstackPopCount(Clazz clazz)Returns the number of entries popped from the stack during the execution of the instruction.intstackPushCount(Clazz clazz)Returns the number of entries pushed onto the stack during the execution of the instruction.java.lang.StringtoString()java.lang.StringtoString(Clazz clazz, int offset)Returns a description of the instruction, at the given offset.voidvisitClassConstant(Clazz clazz, ClassConstant classConstant)voidvisitDoubleConstant(Clazz clazz, DoubleConstant doubleConstant)voidvisitDynamicConstant(Clazz clazz, DynamicConstant dynamicConstant)voidvisitFieldrefConstant(Clazz clazz, FieldrefConstant fieldrefConstant)voidvisitFloatConstant(Clazz clazz, FloatConstant floatConstant)voidvisitIntegerConstant(Clazz clazz, IntegerConstant integerConstant)voidvisitInterfaceMethodrefConstant(Clazz clazz, InterfaceMethodrefConstant interfaceMethodrefConstant)voidvisitInvokeDynamicConstant(Clazz clazz, InvokeDynamicConstant invokeDynamicConstant)voidvisitLongConstant(Clazz clazz, LongConstant longConstant)voidvisitMethodHandleConstant(Clazz clazz, MethodHandleConstant methodHandleConstant)voidvisitMethodrefConstant(Clazz clazz, MethodrefConstant methodrefConstant)voidvisitMethodTypeConstant(Clazz clazz, MethodTypeConstant methodTypeConstant)voidvisitModuleConstant(Clazz clazz, ModuleConstant moduleConstant)voidvisitNameAndTypeConstant(Clazz clazz, NameAndTypeConstant nameAndTypeConstant)voidvisitPackageConstant(Clazz clazz, PackageConstant packageConstant)voidvisitPrimitiveArrayConstant(Clazz clazz, PrimitiveArrayConstant primitiveArrayConstant)voidvisitStringConstant(Clazz clazz, StringConstant stringConstant)voidvisitUtf8Constant(Clazz clazz, Utf8Constant utf8Constant)protected voidwriteInfo(byte[] code, int offset)Writes data following the instruction opcode.-
Methods inherited from class proguard.classfile.instruction.Instruction
actualOpcode, getName, isCategory2, isWide, mayThrowExceptions, readByte, readInt, readShort, readSignedByte, readSignedShort, readSignedValue, readValue, stackEntryIndexBefore, toString, write, write, writeByte, writeInt, writeShort, writeSignedByte, writeSignedShort, writeSignedValue, writeValue
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface proguard.classfile.constant.visitor.ConstantVisitor
visitAnyConstant, visitAnyMethodrefConstant, visitAnyRefConstant
-
-
-
-
Constructor Detail
-
ConstantInstruction
public ConstantInstruction()
Creates an uninitialized ConstantInstruction.
-
ConstantInstruction
public ConstantInstruction(byte opcode, int constantIndex)Creates a new ConstantInstruction with the given opcode and constant pool index.
-
ConstantInstruction
public ConstantInstruction(byte opcode, int constantIndex, int constant)Creates a new ConstantInstruction with the given opcode, constant pool index, and constant.
-
-
Method Detail
-
copy
public ConstantInstruction copy(ConstantInstruction constantInstruction)
Copies the given instruction into this instruction.- Parameters:
constantInstruction- the instruction to be copied.- Returns:
- this instruction.
-
mayInstanceThrowExceptions
public boolean mayInstanceThrowExceptions(Clazz clazz)
Returns whether a particular instance of an instruction may throw an exception.In particular, this takes into account that an ldc with a class, method type or method ref constant operand may throw exceptions while other constants may not.
- Overrides:
mayInstanceThrowExceptionsin classInstruction
-
canonicalOpcode
public byte canonicalOpcode()
Description copied from class:InstructionReturns the canonical opcode of this instruction, i.e. typically the opcode whose extension has been removed.- Overrides:
canonicalOpcodein classInstruction
-
shrink
public Instruction shrink()
Description copied from class:InstructionShrinks this instruction to its shortest possible form.- Specified by:
shrinkin classInstruction- Returns:
- this instruction.
-
readInfo
protected void readInfo(byte[] code, int offset)Description copied from class:InstructionReads the data following the instruction opcode.- Specified by:
readInfoin classInstruction
-
writeInfo
protected void writeInfo(byte[] code, int offset)Description copied from class:InstructionWrites data following the instruction opcode.- Specified by:
writeInfoin classInstruction
-
length
public int length(int offset)
Description copied from class:InstructionReturns the length in bytes of the instruction.- Specified by:
lengthin classInstruction
-
accept
public void accept(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, InstructionVisitor instructionVisitor)
Description copied from class:InstructionAccepts the given visitor.- Specified by:
acceptin classInstruction
-
toString
public java.lang.String toString(Clazz clazz, int offset)
Description copied from class:InstructionReturns a description of the instruction, at the given offset.- Overrides:
toStringin classInstruction
-
stackPopCount
public int stackPopCount(Clazz clazz)
Description copied from class:InstructionReturns the number of entries popped from the stack during the execution of the instruction.- Overrides:
stackPopCountin classInstruction
-
stackPushCount
public int stackPushCount(Clazz clazz)
Description copied from class:InstructionReturns the number of entries pushed onto the stack during the execution of the instruction.- Overrides:
stackPushCountin classInstruction
-
visitIntegerConstant
public void visitIntegerConstant(Clazz clazz, IntegerConstant integerConstant)
- Specified by:
visitIntegerConstantin interfaceConstantVisitor
-
visitLongConstant
public void visitLongConstant(Clazz clazz, LongConstant longConstant)
- Specified by:
visitLongConstantin interfaceConstantVisitor
-
visitFloatConstant
public void visitFloatConstant(Clazz clazz, FloatConstant floatConstant)
- Specified by:
visitFloatConstantin interfaceConstantVisitor
-
visitDoubleConstant
public void visitDoubleConstant(Clazz clazz, DoubleConstant doubleConstant)
- Specified by:
visitDoubleConstantin interfaceConstantVisitor
-
visitPrimitiveArrayConstant
public void visitPrimitiveArrayConstant(Clazz clazz, PrimitiveArrayConstant primitiveArrayConstant)
- Specified by:
visitPrimitiveArrayConstantin interfaceConstantVisitor
-
visitStringConstant
public void visitStringConstant(Clazz clazz, StringConstant stringConstant)
- Specified by:
visitStringConstantin interfaceConstantVisitor
-
visitUtf8Constant
public void visitUtf8Constant(Clazz clazz, Utf8Constant utf8Constant)
- Specified by:
visitUtf8Constantin interfaceConstantVisitor
-
visitMethodHandleConstant
public void visitMethodHandleConstant(Clazz clazz, MethodHandleConstant methodHandleConstant)
- Specified by:
visitMethodHandleConstantin interfaceConstantVisitor
-
visitClassConstant
public void visitClassConstant(Clazz clazz, ClassConstant classConstant)
- Specified by:
visitClassConstantin interfaceConstantVisitor
-
visitMethodTypeConstant
public void visitMethodTypeConstant(Clazz clazz, MethodTypeConstant methodTypeConstant)
- Specified by:
visitMethodTypeConstantin interfaceConstantVisitor
-
visitModuleConstant
public void visitModuleConstant(Clazz clazz, ModuleConstant moduleConstant)
- Specified by:
visitModuleConstantin interfaceConstantVisitor
-
visitPackageConstant
public void visitPackageConstant(Clazz clazz, PackageConstant packageConstant)
- Specified by:
visitPackageConstantin interfaceConstantVisitor
-
visitFieldrefConstant
public void visitFieldrefConstant(Clazz clazz, FieldrefConstant fieldrefConstant)
- Specified by:
visitFieldrefConstantin interfaceConstantVisitor
-
visitDynamicConstant
public void visitDynamicConstant(Clazz clazz, DynamicConstant dynamicConstant)
- Specified by:
visitDynamicConstantin interfaceConstantVisitor
-
visitInvokeDynamicConstant
public void visitInvokeDynamicConstant(Clazz clazz, InvokeDynamicConstant invokeDynamicConstant)
- Specified by:
visitInvokeDynamicConstantin interfaceConstantVisitor
-
visitInterfaceMethodrefConstant
public void visitInterfaceMethodrefConstant(Clazz clazz, InterfaceMethodrefConstant interfaceMethodrefConstant)
- Specified by:
visitInterfaceMethodrefConstantin interfaceConstantVisitor
-
visitMethodrefConstant
public void visitMethodrefConstant(Clazz clazz, MethodrefConstant methodrefConstant)
- Specified by:
visitMethodrefConstantin interfaceConstantVisitor
-
visitNameAndTypeConstant
public void visitNameAndTypeConstant(Clazz clazz, NameAndTypeConstant nameAndTypeConstant)
- Specified by:
visitNameAndTypeConstantin interfaceConstantVisitor
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
equals
public boolean equals(java.lang.Object o)
- Specified by:
equalsin classInstruction
-
hashCode
public int hashCode()
- Specified by:
hashCodein classInstruction
-
-