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[]framesprivate java.lang.StringmethodClassnameprivate CodeConverter.ArrayAccessReplacementMethodNamesnamesprivate intoffset-
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 voidclean()private FramegetFrame(int pos)private java.lang.StringgetLoadReplacementSignature(int opcode)private java.lang.StringgetMethodName(int opcode)private java.lang.StringgetStoreReplacementSignature(int opcode)private java.lang.StringgetTopType(int pos)private voidinitFrames(CtClass clazz, MethodInfo minfo)voidinitialize(ConstPool cp, CtClass clazz, MethodInfo minfo)private intreplace(ConstPool cp, CodeIterator iterator, int pos, int opcode, java.lang.String signature)inttransform(CtClass tclazz, int pos, CodeIterator iterator, ConstPool cp)private intupdatePos(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:
initializein classTransformer- Throws:
CannotCompileException
-
clean
public void clean()
- Overrides:
cleanin classTransformer
-
transform
public int transform(CtClass tclazz, int pos, CodeIterator iterator, ConstPool cp) throws BadBytecode
- Specified by:
transformin 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
-
-