Class JFRLegacyMethodAdvisor
- 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.jfrlegacy.impl.JFRLegacyMethodAdvisor
-
- All Implemented Interfaces:
org.objectweb.asm.Opcodes
public class JFRLegacyMethodAdvisor extends org.objectweb.asm.commons.AdviceAdapter
Code emitter for JFR distributed with pre-JDK 9 releases. Probably works with JRockit too. ;)
-
-
Field Summary
Fields Modifier and Type Field Description private org.objectweb.asm.Type[]
argumentTypesRef
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
JFRLegacyMethodAdvisor(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 void
createEvent()
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, boolean allowToString)
-
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
-
shouldInstrumentThrow
private boolean shouldInstrumentThrow
-
-
Constructor Detail
-
JFRLegacyMethodAdvisor
protected JFRLegacyMethodAdvisor(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
- Throws:
IllegalSyntaxException
-
loadField
private void loadField(ReferenceChain refChain)
-
writeAttribute
private void writeAttribute(Attribute param, org.objectweb.asm.Type type, boolean allowToString)
-
onMethodExit
protected void onMethodExit(int opcode)
- Overrides:
onMethodExit
in classorg.objectweb.asm.commons.AdviceAdapter
-
emitSettingReturnParam
private void emitSettingReturnParam(int opcode, ReturnValue returnValue)
-
commitEvent
private void commitEvent()
-
-