org.objectweb.asm.Opcodes
protected class ContainerGhostingAugmenter.AugmentClassAdapter
extends org.objectweb.asm.ClassVisitor
implements org.objectweb.asm.Opcodes
AALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_DEPRECATED, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_MANDATED, ACC_MODULE, ACC_NATIVE, ACC_OPEN, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STATIC_PHASE, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_TRANSITIVE, ACC_VARARGS, ACC_VOLATILE, ACONST_NULL, ALOAD, ANEWARRAY, ARETURN, ARRAYLENGTH, ASM4, ASM5, ASM6, ASM7_EXPERIMENTAL, ASTORE, ATHROW, BALOAD, BASTORE, BIPUSH, CALOAD, CASTORE, CHECKCAST, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DMUL, DNEG, DOUBLE, DREM, DRETURN, DSTORE, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F_APPEND, F_CHOP, F_FULL, F_NEW, F_SAME, F_SAME1, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAT, FMUL, FNEG, FREM, FRETURN, FSTORE, FSUB, GETFIELD, GETSTATIC, GOTO, H_GETFIELD, H_GETSTATIC, H_INVOKEINTERFACE, H_INVOKESPECIAL, H_INVOKESTATIC, H_INVOKEVIRTUAL, H_NEWINVOKESPECIAL, H_PUTFIELD, H_PUTSTATIC, 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, IMUL, INEG, INSTANCEOF, INTEGER, INVOKEDYNAMIC, INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISUB, IUSHR, IXOR, JSR, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDIV, LLOAD, LMUL, LNEG, LONG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, NULL, POP, POP2, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, SWAP, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, TOP, UNINITIALIZED_THIS, V_PREVIEW_EXPERIMENTAL, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6, V1_7, V1_8, V10, V11, V12, V9
Constructor | Description |
---|---|
AugmentClassAdapter(org.objectweb.asm.ClassVisitor cv,
Set<String> existingMethods,
Set<String> existingFields,
Method methodToAugment,
boolean toInjectAfterOriginal) |
Creates a new augmentor.
|
Modifier and Type | Method | Description |
---|---|---|
void |
augmentUpdateMethodAfter(boolean toSynthOriginal,
String className,
String superClassName,
String methodDesc) |
Augments the
update method that is assumed to always
have two parameters, injecting the ghosting code after the
original implementation. |
void |
augmentUpdateMethodBefore(boolean toSynthOriginal,
String className,
String superClassName,
String methodDesc) |
Augments the
update method that is assumed to always
have two parameters, injecting the ghosting code before the
original implementation. |
void |
visit(int version,
int access,
String name,
String signature,
String superName,
String[] interfaces) |
|
org.objectweb.asm.MethodVisitor |
visitMethod(int access,
String name,
String desc,
String signature,
String[] exceptions) |
public AugmentClassAdapter(org.objectweb.asm.ClassVisitor cv, Set<String> existingMethods, Set<String> existingFields, Method methodToAugment, boolean toInjectAfterOriginal)
cv
- Class visitor to recreate the non-augmented methods.existingMethods
- Contains all method names.existingFields
- Contains all field names.methodToAugment
- Method to augment.toInjectAfterOriginal
- true
if the code needs to be injected after
the call to the original implementation.public void visit(int version, int access, String name, String signature, String superName, String[] interfaces)
visit
in class org.objectweb.asm.ClassVisitor
public void augmentUpdateMethodBefore(boolean toSynthOriginal, String className, String superClassName, String methodDesc)
update
method that is assumed to always
have two parameters, injecting the ghosting code before the
original implementation.toSynthOriginal
- Indication whether we need to create an empty (only call
to super()) implementation.className
- Class name.superClassName
- Super class name (relevant for generating empty
implementation).methodDesc
- Function signature (using JNI style declaration). Example
for void installUI(JButton button)
:
(Ljavax/swing/JButton;)V
.public void augmentUpdateMethodAfter(boolean toSynthOriginal, String className, String superClassName, String methodDesc)
update
method that is assumed to always
have two parameters, injecting the ghosting code after the
original implementation.toSynthOriginal
- Indication whether we need to create an empty (only call
to super()) implementation.className
- Class name.superClassName
- Super class name (relevant for generating empty
implementation).methodDesc
- Function signature (using JNI style declaration). Example
for void installUI(JButton button)
:
(Ljavax/swing/JButton;)V
.