Class Advice.Dispatcher.Inlining.CodeTranslationVisitor

  • Enclosing class:
    Advice.Dispatcher.Inlining

    protected static class Advice.Dispatcher.Inlining.CodeTranslationVisitor
    extends org.objectweb.asm.MethodVisitor
    A visitor for translating an advice method's byte code for inlining into the instrumented method.
    • Field Detail

      • methodVisitor

        protected final org.objectweb.asm.MethodVisitor methodVisitor
        The original method visitor to which all instructions are eventually written to.
      • implementationContext

        protected final Implementation.Context implementationContext
        The implementation context to use.
      • instrumentedType

        private final TypeDescription instrumentedType
        The instrumented type.
      • instrumentedMethod

        private final MethodDescription instrumentedMethod
        The instrumented method.
      • assigner

        private final Assigner assigner
        The assigner to use.
      • offsetMappings

        private final java.util.Map<java.lang.Integer,​Advice.OffsetMapping.Target> offsetMappings
        A mapping of offsets to resolved target offsets in the instrumented method.
      • exit

        private final boolean exit
        true if this visitor is for exit advice.
      • endOfMethod

        protected final org.objectweb.asm.Label endOfMethod
        A label indicating the end of the advice byte code.
    • Constructor Detail

      • CodeTranslationVisitor

        protected CodeTranslationVisitor​(org.objectweb.asm.MethodVisitor methodVisitor,
                                         Implementation.Context implementationContext,
                                         Advice.ArgumentHandler.ForAdvice argumentHandler,
                                         Advice.MethodSizeHandler.ForAdvice methodSizeHandler,
                                         Advice.StackMapFrameHandler.ForAdvice stackMapFrameHandler,
                                         TypeDescription instrumentedType,
                                         MethodDescription instrumentedMethod,
                                         Assigner assigner,
                                         MethodDescription.InDefinedShape adviceMethod,
                                         java.util.Map<java.lang.Integer,​Advice.OffsetMapping.Target> offsetMappings,
                                         Advice.Dispatcher.SuppressionHandler.Bound suppressionHandler,
                                         Advice.Dispatcher.RelocationHandler.Bound relocationHandler,
                                         Advice.PostProcessor postProcessor,
                                         boolean exit)
        Creates a new code translation visitor.
        Parameters:
        methodVisitor - A method visitor for writing the instrumented method's byte code.
        implementationContext - The implementation context to use.
        argumentHandler - A handler for accessing values on the local variable array.
        methodSizeHandler - A handler for computing the method size requirements.
        stackMapFrameHandler - A handler for translating and injecting stack map frames.
        instrumentedType - The instrumented type.
        instrumentedMethod - The instrumented method.
        assigner - The assigner to use.
        adviceMethod - The advice method.
        offsetMappings - A mapping of offsets to resolved target offsets in the instrumented method.
        suppressionHandler - A bound suppression handler that is used for suppressing exceptions of this advice method.
        relocationHandler - A bound relocation handler that is responsible for considering a non-standard control flow.
        postProcessor - The post processor to apply.
        exit - true if this visitor is for exit advice.
    • Method Detail

      • visitParameter

        public void visitParameter​(java.lang.String name,
                                   int modifiers)
        Overrides:
        visitParameter in class org.objectweb.asm.MethodVisitor
      • visitAnnotableParameterCount

        public void visitAnnotableParameterCount​(int count,
                                                 boolean visible)
        Overrides:
        visitAnnotableParameterCount in class org.objectweb.asm.MethodVisitor
      • visitAnnotationDefault

        public org.objectweb.asm.AnnotationVisitor visitAnnotationDefault()
        Overrides:
        visitAnnotationDefault in class org.objectweb.asm.MethodVisitor
      • visitAnnotation

        public org.objectweb.asm.AnnotationVisitor visitAnnotation​(java.lang.String descriptor,
                                                                   boolean visible)
        Overrides:
        visitAnnotation in class org.objectweb.asm.MethodVisitor
      • visitTypeAnnotation

        public org.objectweb.asm.AnnotationVisitor visitTypeAnnotation​(int typeReference,
                                                                       org.objectweb.asm.TypePath typePath,
                                                                       java.lang.String descriptor,
                                                                       boolean visible)
        Overrides:
        visitTypeAnnotation in class org.objectweb.asm.MethodVisitor
      • visitParameterAnnotation

        public org.objectweb.asm.AnnotationVisitor visitParameterAnnotation​(int index,
                                                                            java.lang.String descriptor,
                                                                            boolean visible)
        Overrides:
        visitParameterAnnotation in class org.objectweb.asm.MethodVisitor
      • visitAttribute

        public void visitAttribute​(org.objectweb.asm.Attribute attribute)
        Overrides:
        visitAttribute in class org.objectweb.asm.MethodVisitor
      • visitCode

        public void visitCode()
        Overrides:
        visitCode in class org.objectweb.asm.MethodVisitor
      • visitFrame

        public void visitFrame​(int type,
                               int localVariableLength,
                               java.lang.Object[] localVariable,
                               int stackSize,
                               java.lang.Object[] stack)
        Overrides:
        visitFrame in class org.objectweb.asm.MethodVisitor
      • visitVarInsn

        public void visitVarInsn​(int opcode,
                                 int offset)
        Overrides:
        visitVarInsn in class org.objectweb.asm.MethodVisitor
      • visitIincInsn

        public void visitIincInsn​(int offset,
                                  int value)
        Overrides:
        visitIincInsn in class org.objectweb.asm.MethodVisitor
      • visitInsn

        public void visitInsn​(int opcode)
        Overrides:
        visitInsn in class org.objectweb.asm.MethodVisitor
      • visitEnd

        public void visitEnd()
        Overrides:
        visitEnd in class org.objectweb.asm.MethodVisitor
      • visitMaxs

        public void visitMaxs​(int stackSize,
                              int localVariableLength)
        Overrides:
        visitMaxs in class org.objectweb.asm.MethodVisitor