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
ThisInstruction
represents an instruction that refers to an entry in the constant pool.
-
-
Field Summary
Fields Modifier and Type Field Description int
constant
int
constantIndex
-
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 void
accept(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, InstructionVisitor instructionVisitor)
Accepts the given visitor.byte
canonicalOpcode()
Returns the canonical opcode of this instruction, i.e.ConstantInstruction
copy(ConstantInstruction constantInstruction)
Copies the given instruction into this instruction.boolean
equals(java.lang.Object o)
int
hashCode()
int
length(int offset)
Returns the length in bytes of the instruction.boolean
mayInstanceThrowExceptions(Clazz clazz)
Returns whether a particular instance of an instruction may throw an exception.protected void
readInfo(byte[] code, int offset)
Reads the data following the instruction opcode.Instruction
shrink()
Shrinks this instruction to its shortest possible form.int
stackPopCount(Clazz clazz)
Returns the number of entries popped from the stack during the execution of the instruction.int
stackPushCount(Clazz clazz)
Returns the number of entries pushed onto the stack during the execution of the instruction.java.lang.String
toString()
java.lang.String
toString(Clazz clazz, int offset)
Returns a description of the instruction, at the given offset.void
visitClassConstant(Clazz clazz, ClassConstant classConstant)
void
visitDoubleConstant(Clazz clazz, DoubleConstant doubleConstant)
void
visitDynamicConstant(Clazz clazz, DynamicConstant dynamicConstant)
void
visitFieldrefConstant(Clazz clazz, FieldrefConstant fieldrefConstant)
void
visitFloatConstant(Clazz clazz, FloatConstant floatConstant)
void
visitIntegerConstant(Clazz clazz, IntegerConstant integerConstant)
void
visitInterfaceMethodrefConstant(Clazz clazz, InterfaceMethodrefConstant interfaceMethodrefConstant)
void
visitInvokeDynamicConstant(Clazz clazz, InvokeDynamicConstant invokeDynamicConstant)
void
visitLongConstant(Clazz clazz, LongConstant longConstant)
void
visitMethodHandleConstant(Clazz clazz, MethodHandleConstant methodHandleConstant)
void
visitMethodrefConstant(Clazz clazz, MethodrefConstant methodrefConstant)
void
visitMethodTypeConstant(Clazz clazz, MethodTypeConstant methodTypeConstant)
void
visitModuleConstant(Clazz clazz, ModuleConstant moduleConstant)
void
visitNameAndTypeConstant(Clazz clazz, NameAndTypeConstant nameAndTypeConstant)
void
visitPackageConstant(Clazz clazz, PackageConstant packageConstant)
void
visitPrimitiveArrayConstant(Clazz clazz, PrimitiveArrayConstant primitiveArrayConstant)
void
visitStringConstant(Clazz clazz, StringConstant stringConstant)
void
visitUtf8Constant(Clazz clazz, Utf8Constant utf8Constant)
protected void
writeInfo(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:
mayInstanceThrowExceptions
in classInstruction
-
canonicalOpcode
public byte canonicalOpcode()
Description copied from class:Instruction
Returns the canonical opcode of this instruction, i.e. typically the opcode whose extension has been removed.- Overrides:
canonicalOpcode
in classInstruction
-
shrink
public Instruction shrink()
Description copied from class:Instruction
Shrinks this instruction to its shortest possible form.- Specified by:
shrink
in classInstruction
- Returns:
- this instruction.
-
readInfo
protected void readInfo(byte[] code, int offset)
Description copied from class:Instruction
Reads the data following the instruction opcode.- Specified by:
readInfo
in classInstruction
-
writeInfo
protected void writeInfo(byte[] code, int offset)
Description copied from class:Instruction
Writes data following the instruction opcode.- Specified by:
writeInfo
in classInstruction
-
length
public int length(int offset)
Description copied from class:Instruction
Returns the length in bytes of the instruction.- Specified by:
length
in classInstruction
-
accept
public void accept(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, InstructionVisitor instructionVisitor)
Description copied from class:Instruction
Accepts the given visitor.- Specified by:
accept
in classInstruction
-
toString
public java.lang.String toString(Clazz clazz, int offset)
Description copied from class:Instruction
Returns a description of the instruction, at the given offset.- Overrides:
toString
in classInstruction
-
stackPopCount
public int stackPopCount(Clazz clazz)
Description copied from class:Instruction
Returns the number of entries popped from the stack during the execution of the instruction.- Overrides:
stackPopCount
in classInstruction
-
stackPushCount
public int stackPushCount(Clazz clazz)
Description copied from class:Instruction
Returns the number of entries pushed onto the stack during the execution of the instruction.- Overrides:
stackPushCount
in classInstruction
-
visitIntegerConstant
public void visitIntegerConstant(Clazz clazz, IntegerConstant integerConstant)
- Specified by:
visitIntegerConstant
in interfaceConstantVisitor
-
visitLongConstant
public void visitLongConstant(Clazz clazz, LongConstant longConstant)
- Specified by:
visitLongConstant
in interfaceConstantVisitor
-
visitFloatConstant
public void visitFloatConstant(Clazz clazz, FloatConstant floatConstant)
- Specified by:
visitFloatConstant
in interfaceConstantVisitor
-
visitDoubleConstant
public void visitDoubleConstant(Clazz clazz, DoubleConstant doubleConstant)
- Specified by:
visitDoubleConstant
in interfaceConstantVisitor
-
visitPrimitiveArrayConstant
public void visitPrimitiveArrayConstant(Clazz clazz, PrimitiveArrayConstant primitiveArrayConstant)
- Specified by:
visitPrimitiveArrayConstant
in interfaceConstantVisitor
-
visitStringConstant
public void visitStringConstant(Clazz clazz, StringConstant stringConstant)
- Specified by:
visitStringConstant
in interfaceConstantVisitor
-
visitUtf8Constant
public void visitUtf8Constant(Clazz clazz, Utf8Constant utf8Constant)
- Specified by:
visitUtf8Constant
in interfaceConstantVisitor
-
visitMethodHandleConstant
public void visitMethodHandleConstant(Clazz clazz, MethodHandleConstant methodHandleConstant)
- Specified by:
visitMethodHandleConstant
in interfaceConstantVisitor
-
visitClassConstant
public void visitClassConstant(Clazz clazz, ClassConstant classConstant)
- Specified by:
visitClassConstant
in interfaceConstantVisitor
-
visitMethodTypeConstant
public void visitMethodTypeConstant(Clazz clazz, MethodTypeConstant methodTypeConstant)
- Specified by:
visitMethodTypeConstant
in interfaceConstantVisitor
-
visitModuleConstant
public void visitModuleConstant(Clazz clazz, ModuleConstant moduleConstant)
- Specified by:
visitModuleConstant
in interfaceConstantVisitor
-
visitPackageConstant
public void visitPackageConstant(Clazz clazz, PackageConstant packageConstant)
- Specified by:
visitPackageConstant
in interfaceConstantVisitor
-
visitFieldrefConstant
public void visitFieldrefConstant(Clazz clazz, FieldrefConstant fieldrefConstant)
- Specified by:
visitFieldrefConstant
in interfaceConstantVisitor
-
visitDynamicConstant
public void visitDynamicConstant(Clazz clazz, DynamicConstant dynamicConstant)
- Specified by:
visitDynamicConstant
in interfaceConstantVisitor
-
visitInvokeDynamicConstant
public void visitInvokeDynamicConstant(Clazz clazz, InvokeDynamicConstant invokeDynamicConstant)
- Specified by:
visitInvokeDynamicConstant
in interfaceConstantVisitor
-
visitInterfaceMethodrefConstant
public void visitInterfaceMethodrefConstant(Clazz clazz, InterfaceMethodrefConstant interfaceMethodrefConstant)
- Specified by:
visitInterfaceMethodrefConstant
in interfaceConstantVisitor
-
visitMethodrefConstant
public void visitMethodrefConstant(Clazz clazz, MethodrefConstant methodrefConstant)
- Specified by:
visitMethodrefConstant
in interfaceConstantVisitor
-
visitNameAndTypeConstant
public void visitNameAndTypeConstant(Clazz clazz, NameAndTypeConstant nameAndTypeConstant)
- Specified by:
visitNameAndTypeConstant
in interfaceConstantVisitor
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
equals
public boolean equals(java.lang.Object o)
- Specified by:
equals
in classInstruction
-
hashCode
public int hashCode()
- Specified by:
hashCode
in classInstruction
-
-