Class Advice.AdviceVisitor

java.lang.Object
org.objectweb.asm.MethodVisitor
All Implemented Interfaces:
Advice.Dispatcher.RelocationHandler.Relocation
Direct Known Subclasses:
Advice.AdviceVisitor.WithExitAdvice, Advice.AdviceVisitor.WithoutExitAdvice
Enclosing class:
Advice

protected abstract static class Advice.AdviceVisitor extends ExceptionTableSensitiveMethodVisitor implements Advice.Dispatcher.RelocationHandler.Relocation
A method visitor that weaves the advice methods' byte codes.
  • Field Details

    • THIS_VARIABLE_INDEX

      private static final int THIS_VARIABLE_INDEX
      The expected index for the this variable.
      See Also:
    • THIS_VARIABLE_NAME

      private static final String THIS_VARIABLE_NAME
      The expected name for the this variable.
      See Also:
    • instrumentedMethod

      protected final MethodDescription instrumentedMethod
      A description of the instrumented method.
    • preparationStart

      private final org.objectweb.asm.Label preparationStart
      A label that indicates the start of the preparation of a user method execution.
    • methodEnter

      private final Advice.Dispatcher.Bound methodEnter
      The dispatcher to be used for method enter.
    • methodExit

      protected final Advice.Dispatcher.Bound methodExit
      The dispatcher to be used for method exit.
    • argumentHandler

      protected final Advice.ArgumentHandler.ForInstrumentedMethod argumentHandler
      The handler for accessing arguments of the method's local variable array.
    • methodSizeHandler

      protected final Advice.MethodSizeHandler.ForInstrumentedMethod methodSizeHandler
      A handler for computing the method size requirements.
    • stackMapFrameHandler

      protected final Advice.StackMapFrameHandler.ForInstrumentedMethod stackMapFrameHandler
      A handler for translating and injecting stack map frames.
  • Constructor Details

    • AdviceVisitor

      protected AdviceVisitor(org.objectweb.asm.MethodVisitor methodVisitor, Implementation.Context implementationContext, Assigner assigner, StackManipulation exceptionHandler, TypeDescription instrumentedType, MethodDescription instrumentedMethod, Advice.Dispatcher.Resolved.ForMethodEnter methodEnter, Advice.Dispatcher.Resolved.ForMethodExit methodExit, List<? extends TypeDescription> postMethodTypes, int writerFlags, int readerFlags)
      Creates a new advice visitor.
      Parameters:
      methodVisitor - The actual method visitor that is underlying this method visitor to which all instructions are written.
      implementationContext - The implementation context to use.
      assigner - The assigner to use.
      exceptionHandler - The stack manipulation to apply within a suppression handler.
      instrumentedType - A description of the instrumented type.
      instrumentedMethod - The instrumented method.
      methodEnter - The method enter advice.
      methodExit - The method exit advice.
      postMethodTypes - A list of virtual method arguments that are available after the instrumented method has completed.
      writerFlags - The ASM writer flags that were set.
      readerFlags - The ASM reader flags that were set.
  • Method Details

    • onAfterExceptionTable

      protected void onAfterExceptionTable()
      Description copied from class: ExceptionTableSensitiveMethodVisitor
      Invoked after the exception table was visited. Typically, the exception table is visited by ASM at the beginning of a method. It is however possible that a user adds exception table entries at a later point. Normally, this is however not meaningful use of ASM.
      Specified by:
      onAfterExceptionTable in class ExceptionTableSensitiveMethodVisitor
    • onUserPrepare

      protected abstract void onUserPrepare()
      Invoked when the user method's exception handler (if any) is supposed to be prepared.
    • onUserStart

      protected abstract void onUserStart()
      Writes the advice for entering the instrumented method.
    • onVisitVarInsn

      protected void onVisitVarInsn(int opcode, int offset)
      Description copied from class: ExceptionTableSensitiveMethodVisitor
      Visits an variable instruction.
      Overrides:
      onVisitVarInsn in class ExceptionTableSensitiveMethodVisitor
      Parameters:
      opcode - The visited opcode.
      offset - The visited offset.
    • onVisitIincInsn

      protected void onVisitIincInsn(int offset, int increment)
      Description copied from class: ExceptionTableSensitiveMethodVisitor
      Visits an increment instruction.
      Overrides:
      onVisitIincInsn in class ExceptionTableSensitiveMethodVisitor
      Parameters:
      offset - The offset of the accessed variable.
      increment - The value with which to increment.
    • onVisitFrame

      public void onVisitFrame(int type, int localVariableLength, @MaybeNull Object[] localVariable, int stackSize, @MaybeNull Object[] stack)
      Description copied from class: ExceptionTableSensitiveMethodVisitor
      Visits a stack map frame.
      Overrides:
      onVisitFrame in class ExceptionTableSensitiveMethodVisitor
      Parameters:
      type - The type of stack map frame.
      localVariableLength - The length of the local variable array.
      localVariable - An array containing type symbols for all values in the local variable array.
      stackSize - The size of the operand stack.
      stack - An array containing type symbols for all values on the operand stack.
    • visitMaxs

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

      public void visitLocalVariable(String name, String descriptor, String signature, org.objectweb.asm.Label start, org.objectweb.asm.Label end, int offset)
      Overrides:
      visitLocalVariable in class org.objectweb.asm.MethodVisitor
    • visitLocalVariableAnnotation

      public org.objectweb.asm.AnnotationVisitor visitLocalVariableAnnotation(int typeReference, org.objectweb.asm.TypePath typePath, org.objectweb.asm.Label[] start, org.objectweb.asm.Label[] end, int[] offset, String descriptor, boolean visible)
      Overrides:
      visitLocalVariableAnnotation in class org.objectweb.asm.MethodVisitor
    • onUserEnd

      protected abstract void onUserEnd()
      Writes the advice for completing the instrumented method.