public final class TransformAccessArrayField extends Transformer
Modifier and Type | Field and Description |
---|---|
private Frame[] |
frames |
private java.lang.String |
methodClassname |
private CodeConverter.ArrayAccessReplacementMethodNames |
names |
private int |
offset |
AALOAD, AASTORE, ACONST_NULL, ALOAD, ALOAD_0, ALOAD_1, ALOAD_2, ALOAD_3, ANEWARRAY, ARETURN, ARRAYLENGTH, ASTORE, ASTORE_0, ASTORE_1, ASTORE_2, ASTORE_3, ATHROW, BALOAD, BASTORE, BIPUSH, CALOAD, CASTORE, CHECKCAST, 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, GETFIELD, GETSTATIC, 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, ILOAD, ILOAD_0, ILOAD_1, ILOAD_2, ILOAD_3, IMUL, INEG, INSTANCEOF, INVOKEDYNAMIC, INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISTORE_0, ISTORE_1, ISTORE_2, ISTORE_3, ISUB, IUSHR, IXOR, JSR, JSR_W, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDC_W, LDC2_W, 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, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, POP, POP2, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, STACK_GROW, SWAP, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, WIDE
Constructor and Description |
---|
TransformAccessArrayField(Transformer next,
java.lang.String methodClassname,
CodeConverter.ArrayAccessReplacementMethodNames names) |
Modifier and Type | Method and Description |
---|---|
void |
clean() |
private Frame |
getFrame(int pos) |
private java.lang.String |
getLoadReplacementSignature(int opcode) |
private java.lang.String |
getMethodName(int opcode) |
private java.lang.String |
getStoreReplacementSignature(int opcode) |
private java.lang.String |
getTopType(int pos) |
private void |
initFrames(CtClass clazz,
MethodInfo minfo) |
void |
initialize(ConstPool cp,
CtClass clazz,
MethodInfo minfo) |
private int |
replace(ConstPool cp,
CodeIterator iterator,
int pos,
int opcode,
java.lang.String signature) |
int |
transform(CtClass tclazz,
int pos,
CodeIterator iterator,
ConstPool cp) |
private int |
updatePos(int pos,
int increment) |
extraLocals, extraStack, getNext, initialize
private final java.lang.String methodClassname
private final CodeConverter.ArrayAccessReplacementMethodNames names
private Frame[] frames
private int offset
public TransformAccessArrayField(Transformer next, java.lang.String methodClassname, CodeConverter.ArrayAccessReplacementMethodNames names) throws NotFoundException
NotFoundException
public void initialize(ConstPool cp, CtClass clazz, MethodInfo minfo) throws CannotCompileException
initialize
in class Transformer
CannotCompileException
public void clean()
clean
in class Transformer
public int transform(CtClass tclazz, int pos, CodeIterator iterator, ConstPool cp) throws BadBytecode
transform
in class Transformer
BadBytecode
private Frame getFrame(int pos) throws BadBytecode
BadBytecode
private void initFrames(CtClass clazz, MethodInfo minfo) throws BadBytecode
BadBytecode
private int updatePos(int pos, int increment)
private java.lang.String getTopType(int pos) throws BadBytecode
BadBytecode
private int replace(ConstPool cp, CodeIterator iterator, int pos, int opcode, java.lang.String signature) throws BadBytecode
BadBytecode
private java.lang.String getMethodName(int opcode)
private java.lang.String getLoadReplacementSignature(int opcode) throws BadBytecode
BadBytecode
private java.lang.String getStoreReplacementSignature(int opcode) throws BadBytecode
BadBytecode