public class ReflectionStyleClassMethodAdapter
extends org.objectweb.asm.commons.AdviceAdapter
AgentWrapper.invoke(Object, java.lang.reflect.Method, Object[]).
This adapter is commonly instrumenting bootstrap classes, but it may encounter non-bootstrap classes too.| Modifier and Type | Field and Description |
|---|---|
protected GenericClassAdapter |
genericClassAdapter |
protected MethodBuilder |
methodBuilder |
protected java.lang.String |
methodName |
ADD, AND, DIV, EQ, GE, GT, LE, LT, MUL, NE, NEG, OR, REM, SHL, SHR, SUB, USHR, XORAALOAD, 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_RECORD, 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, ASM10_EXPERIMENTAL, ASM4, ASM5, ASM6, ASM7, ASM8, ASM9, 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, SOURCE_DEPRECATED, SOURCE_MASK, SWAP, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, TOP, V_PREVIEW, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6, V1_7, V1_8, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V9| Constructor and Description |
|---|
ReflectionStyleClassMethodAdapter(GenericClassAdapter genericClassAdapter,
org.objectweb.asm.MethodVisitor mv,
int access,
org.objectweb.asm.commons.Method method,
int tracerFactoryId) |
| Modifier and Type | Method and Description |
|---|---|
GenericClassAdapter |
getGenericClassAdapter() |
int |
getInvocationHandlerIndex() |
protected org.objectweb.asm.Type |
getTracerType() |
protected void |
invokeGetTracer() |
protected void |
invokeTraceFinish(int opcode,
java.lang.Object loadReturnValue) |
protected void |
invokeTraceFinishWithThrowable(int exceptionVar) |
protected void |
loadGetTracerArguments() |
protected void |
onFinally(int opcode)
Writes the instrumentation code that is executed after the existing method body.
|
protected void |
onMethodEnter()
Writes the instrumentation code that is executed before the existing method body.
|
protected void |
onMethodExit(int opcode) |
protected void |
systemOutPrint(java.lang.String message) |
protected void |
systemPrint(java.lang.String message,
boolean error) |
void |
visitCode() |
void |
visitMaxs(int maxStack,
int maxLocals) |
visitFieldInsn, visitInsn, visitIntInsn, visitInvokeDynamicInsn, visitJumpInsn, visitLabel, visitLdcInsn, visitLookupSwitchInsn, visitMethodInsn, visitMultiANewArrayInsn, visitTableSwitchInsn, visitTryCatchBlock, visitTypeInsn, visitVarInsnarrayLength, arrayLoad, arrayStore, box, cast, catchException, checkCast, dup, dup2, dup2X1, dup2X2, dupX1, dupX2, endMethod, getAccess, getArgumentTypes, getField, getLocalType, getName, getReturnType, getStatic, goTo, ifCmp, ifICmp, ifNonNull, ifNull, ifZCmp, iinc, instanceOf, invokeConstructor, invokeDynamic, invokeInterface, invokeStatic, invokeVirtual, loadArg, loadArgArray, loadArgs, loadArgs, loadLocal, loadLocal, loadThis, mark, mark, math, monitorEnter, monitorExit, newArray, newInstance, newLabel, not, pop, pop2, push, push, push, push, push, push, push, push, push, putField, putStatic, ret, returnValue, setLocalType, storeArg, storeLocal, storeLocal, swap, swap, tableSwitch, tableSwitch, throwException, throwException, unbox, valueOfnewLocal, newLocalMapping, updateNewLocals, visitFrame, visitIincInsn, visitLocalVariable, visitLocalVariableAnnotationgetDelegate, visitAnnotableParameterCount, visitAnnotation, visitAnnotationDefault, visitAttribute, visitEnd, visitInsnAnnotation, visitLineNumber, visitMethodInsn, visitParameter, visitParameterAnnotation, visitTryCatchAnnotation, visitTypeAnnotationprotected final java.lang.String methodName
protected final GenericClassAdapter genericClassAdapter
protected final MethodBuilder methodBuilder
public ReflectionStyleClassMethodAdapter(GenericClassAdapter genericClassAdapter, org.objectweb.asm.MethodVisitor mv, int access, org.objectweb.asm.commons.Method method, int tracerFactoryId)
protected void loadGetTracerArguments()
protected void systemOutPrint(java.lang.String message)
protected void systemPrint(java.lang.String message,
boolean error)
protected void onMethodEnter()
onMethodEnter in class org.objectweb.asm.commons.AdviceAdapterpublic int getInvocationHandlerIndex()
protected final org.objectweb.asm.Type getTracerType()
protected final void invokeGetTracer()
public GenericClassAdapter getGenericClassAdapter()
public void visitCode()
visitCode in class org.objectweb.asm.commons.AdviceAdapterpublic void visitMaxs(int maxStack,
int maxLocals)
visitMaxs in class org.objectweb.asm.commons.LocalVariablesSorterprotected void onMethodExit(int opcode)
onMethodExit in class org.objectweb.asm.commons.AdviceAdapterprotected void onFinally(int opcode)
ExitTracer.finish(int, Object) or ExitTracer.finish(Throwable). If this is a bootstrap class, the finish
methods are invoked through the InvocationHandler wrapper around the tracer that was created by the
AgentWrapper.protected final void invokeTraceFinish(int opcode,
java.lang.Object loadReturnValue)
protected final void invokeTraceFinishWithThrowable(int exceptionVar)