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
FieldsModifier and TypeFieldDescriptionprivate final org.objectweb.asm.Type[]private intprivate final org.objectweb.asm.Typeprivate final Class<?> private final org.objectweb.asm.Typeprivate booleanprivate static final Stringprivate final JFRTransformDescriptorprivate org.objectweb.asm.Labelprivate org.objectweb.asm.LabelFields inherited from class org.objectweb.asm.commons.AdviceAdapter
methodAccess, methodDescFields 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, XORFields inherited from class org.objectweb.asm.commons.LocalVariablesSorter
firstLocal, nextLocalFields inherited from class org.objectweb.asm.MethodVisitor
api, mvFields 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, V19, V20, V21, V22, V23, V24, V25, V9 -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedJFRLegacyMethodAdvisor(JFRTransformDescriptor transformDescriptor, Class<?> inspectionClass, int api, org.objectweb.asm.MethodVisitor mv, int access, String name, String desc) -
Method Summary
Modifier and TypeMethodDescriptionprivate voidprivate voidprivate voidemitSettingReturnParam(int opcode, ReturnValue returnValue) private voidloadField(ReferenceChain refChain) protected voidprotected voidonMethodExit(int opcode) voidvoidvisitEnd()private voidwriteAttribute(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, visitVarInsnMethods 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, valueOfMethods inherited from class org.objectweb.asm.commons.LocalVariablesSorter
newLocal, newLocalMapping, updateNewLocals, visitFrame, visitIincInsn, visitLocalVariable, visitLocalVariableAnnotation, visitMaxsMethods inherited from class org.objectweb.asm.MethodVisitor
getDelegate, visitAnnotableParameterCount, visitAnnotation, visitAnnotationDefault, visitAttribute, visitInsnAnnotation, visitLineNumber, visitMethodInsn, visitParameter, visitParameterAnnotation, visitTryCatchAnnotation, visitTypeAnnotation
-
Field Details
-
THROWABLE_BINARY_NAME
- See Also:
-
transformDescriptor
-
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 Details
-
JFRLegacyMethodAdvisor
protected JFRLegacyMethodAdvisor(JFRTransformDescriptor transformDescriptor, Class<?> inspectionClass, int api, org.objectweb.asm.MethodVisitor mv, int access, String name, String desc)
-
-
Method Details
-
visitCode
public void visitCode()- Overrides:
visitCodein classorg.objectweb.asm.commons.AdviceAdapter
-
visitEnd
public void visitEnd()- Overrides:
visitEndin classorg.objectweb.asm.MethodVisitor
-
onMethodEnter
protected void onMethodEnter()- Overrides:
onMethodEnterin classorg.objectweb.asm.commons.AdviceAdapter
-
createEvent
- Throws:
IllegalSyntaxException
-
loadField
-
writeAttribute
-
onMethodExit
protected void onMethodExit(int opcode) - Overrides:
onMethodExitin classorg.objectweb.asm.commons.AdviceAdapter
-
emitSettingReturnParam
-
commitEvent
private void commitEvent()
-