Package javassist.convert
Class TransformAccessArrayField
- java.lang.Object
-
- javassist.convert.Transformer
-
- javassist.convert.TransformAccessArrayField
-
- All Implemented Interfaces:
Opcode
public final class TransformAccessArrayField extends Transformer
A transformer which replaces array access with static method invocations.- Version:
- $Revision: 1.8 $
-
-
Field Summary
Fields Modifier and Type Field Description private Frame[]
frames
private java.lang.String
methodClassname
private CodeConverter.ArrayAccessReplacementMethodNames
names
private int
offset
-
Fields inherited from interface javassist.bytecode.Opcode
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 Summary
Constructors Constructor Description TransformAccessArrayField(Transformer next, java.lang.String methodClassname, CodeConverter.ArrayAccessReplacementMethodNames names)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method 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)
-
Methods inherited from class javassist.convert.Transformer
extraLocals, extraStack, getNext, initialize
-
-
-
-
Field Detail
-
methodClassname
private final java.lang.String methodClassname
-
names
private final CodeConverter.ArrayAccessReplacementMethodNames names
-
frames
private Frame[] frames
-
offset
private int offset
-
-
Constructor Detail
-
TransformAccessArrayField
public TransformAccessArrayField(Transformer next, java.lang.String methodClassname, CodeConverter.ArrayAccessReplacementMethodNames names) throws NotFoundException
- Throws:
NotFoundException
-
-
Method Detail
-
initialize
public void initialize(ConstPool cp, CtClass clazz, MethodInfo minfo) throws CannotCompileException
- Overrides:
initialize
in classTransformer
- Throws:
CannotCompileException
-
clean
public void clean()
- Overrides:
clean
in classTransformer
-
transform
public int transform(CtClass tclazz, int pos, CodeIterator iterator, ConstPool cp) throws BadBytecode
- Specified by:
transform
in classTransformer
- Throws:
BadBytecode
-
getFrame
private Frame getFrame(int pos) throws BadBytecode
- Throws:
BadBytecode
-
initFrames
private void initFrames(CtClass clazz, MethodInfo minfo) throws BadBytecode
- Throws:
BadBytecode
-
updatePos
private int updatePos(int pos, int increment)
-
getTopType
private java.lang.String getTopType(int pos) throws BadBytecode
- Throws:
BadBytecode
-
replace
private int replace(ConstPool cp, CodeIterator iterator, int pos, int opcode, java.lang.String signature) throws BadBytecode
- Throws:
BadBytecode
-
getMethodName
private java.lang.String getMethodName(int opcode)
-
getLoadReplacementSignature
private java.lang.String getLoadReplacementSignature(int opcode) throws BadBytecode
- Throws:
BadBytecode
-
getStoreReplacementSignature
private java.lang.String getStoreReplacementSignature(int opcode) throws BadBytecode
- Throws:
BadBytecode
-
-