Package org.openjdk.jmc.agent.jfr.impl
Class JFRMethodAdvisor
- java.lang.Object
-
- org.objectweb.asm.MethodVisitor
-
- org.objectweb.asm.commons.LocalVariablesSorter
-
- org.objectweb.asm.commons.GeneratorAdapter
-
- org.objectweb.asm.commons.AdviceAdapter
-
- org.openjdk.jmc.agent.jfr.impl.JFRMethodAdvisor
-
- All Implemented Interfaces:
org.objectweb.asm.Opcodes
public class JFRMethodAdvisor extends org.objectweb.asm.commons.AdviceAdapter
This class is responsible for transforming the method to be instrumented. Code emitter for JFR next, i.e. the version of JFR distributed with JDK 9 and later.
-
-
Field Summary
Fields Modifier and Type Field Description private org.objectweb.asm.Type[]
argumentTypesRef
private org.objectweb.asm.Label
catchBegin
private int
eventLocal
private org.objectweb.asm.Type
eventType
private java.lang.Class<?>
inspectionClass
private org.objectweb.asm.Type
returnTypeRef
private boolean
shouldInstrumentThrow
private static java.lang.String
THROWABLE_BINARY_NAME
private JFRTransformDescriptor
transformDescriptor
private org.objectweb.asm.Label
tryBegin
private org.objectweb.asm.Label
tryEnd
-
Fields inherited from class org.objectweb.asm.commons.GeneratorAdapter
ADD, AND, DIV, EQ, GE, GT, LE, LT, MUL, NE, NEG, OR, REM, SHL, SHR, SUB, USHR, XOR
-
Fields inherited from interface 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_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, V9
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
JFRMethodAdvisor(JFRTransformDescriptor transformDescriptor, java.lang.Class<?> inspectionClass, int api, org.objectweb.asm.MethodVisitor mv, int access, java.lang.String name, java.lang.String desc)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private void
commitEvent()
private org.objectweb.asm.Type
convertify(org.objectweb.asm.MethodVisitor mv, Attribute convertable, org.objectweb.asm.Type type)
private org.objectweb.asm.Type
convertify(org.objectweb.asm.MethodVisitor mv, ResolvedConvertable resolvedConvertable, org.objectweb.asm.Type type)
private void
createEvent()
Generates the transformation for instantiating the event type, setting its parameter and field attributes and call begin().private void
emitSettingReturnParam(int opcode, ReturnValue returnValue)
private void
loadField(ReferenceChain refChain)
protected void
onMethodEnter()
protected void
onMethodExit(int opcode)
void
visitCode()
void
visitEnd()
private void
writeAttribute(Attribute param, org.objectweb.asm.Type type)
-
Methods inherited from class org.objectweb.asm.commons.AdviceAdapter
visitFieldInsn, visitInsn, visitIntInsn, visitInvokeDynamicInsn, visitJumpInsn, visitLabel, visitLdcInsn, visitLookupSwitchInsn, visitMethodInsn, visitMultiANewArrayInsn, visitTableSwitchInsn, visitTryCatchBlock, visitTypeInsn, visitVarInsn
-
Methods inherited from class org.objectweb.asm.commons.GeneratorAdapter
arrayLength, 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, valueOf
-
Methods inherited from class org.objectweb.asm.commons.LocalVariablesSorter
newLocal, newLocalMapping, updateNewLocals, visitFrame, visitIincInsn, visitLocalVariable, visitLocalVariableAnnotation, visitMaxs
-
-
-
-
Field Detail
-
THROWABLE_BINARY_NAME
private static final java.lang.String THROWABLE_BINARY_NAME
- See Also:
- Constant Field Values
-
transformDescriptor
private final JFRTransformDescriptor transformDescriptor
-
inspectionClass
private final java.lang.Class<?> inspectionClass
-
argumentTypesRef
private final org.objectweb.asm.Type[] argumentTypesRef
-
returnTypeRef
private final org.objectweb.asm.Type returnTypeRef
-
eventType
private final org.objectweb.asm.Type eventType
-
eventLocal
private int eventLocal
-
tryBegin
private org.objectweb.asm.Label tryBegin
-
tryEnd
private org.objectweb.asm.Label tryEnd
-
catchBegin
private org.objectweb.asm.Label catchBegin
-
shouldInstrumentThrow
private boolean shouldInstrumentThrow
-
-
Constructor Detail
-
JFRMethodAdvisor
protected JFRMethodAdvisor(JFRTransformDescriptor transformDescriptor, java.lang.Class<?> inspectionClass, int api, org.objectweb.asm.MethodVisitor mv, int access, java.lang.String name, java.lang.String desc)
-
-
Method Detail
-
visitCode
public void visitCode()
- Overrides:
visitCode
in classorg.objectweb.asm.commons.AdviceAdapter
-
visitEnd
public void visitEnd()
- Overrides:
visitEnd
in classorg.objectweb.asm.MethodVisitor
-
onMethodEnter
protected void onMethodEnter()
- Overrides:
onMethodEnter
in classorg.objectweb.asm.commons.AdviceAdapter
-
createEvent
private void createEvent() throws IllegalSyntaxException, MalformedConverterException
Generates the transformation for instantiating the event type, setting its parameter and field attributes and call begin().
-
loadField
private void loadField(ReferenceChain refChain)
-
writeAttribute
private void writeAttribute(Attribute param, org.objectweb.asm.Type type)
-
convertify
private org.objectweb.asm.Type convertify(org.objectweb.asm.MethodVisitor mv, Attribute convertable, org.objectweb.asm.Type type) throws MalformedConverterException
- Throws:
MalformedConverterException
-
convertify
private org.objectweb.asm.Type convertify(org.objectweb.asm.MethodVisitor mv, ResolvedConvertable resolvedConvertable, org.objectweb.asm.Type type) throws MalformedConverterException
- Throws:
MalformedConverterException
-
onMethodExit
protected void onMethodExit(int opcode)
- Overrides:
onMethodExit
in classorg.objectweb.asm.commons.AdviceAdapter
-
emitSettingReturnParam
private void emitSettingReturnParam(int opcode, ReturnValue returnValue) throws MalformedConverterException
- Throws:
MalformedConverterException
-
commitEvent
private void commitEvent()
-
-