Class Advice.StackMapFrameHandler.Default.WithPreservedArguments

java.lang.Object
net.bytebuddy.asm.Advice.StackMapFrameHandler.Default
net.bytebuddy.asm.Advice.StackMapFrameHandler.Default.WithPreservedArguments
All Implemented Interfaces:
Advice.StackMapFrameHandler, Advice.StackMapFrameHandler.ForInstrumentedMethod
Direct Known Subclasses:
Advice.StackMapFrameHandler.Default.WithPreservedArguments.WithArgumentCopy, Advice.StackMapFrameHandler.Default.WithPreservedArguments.WithoutArgumentCopy
Enclosing class:
Advice.StackMapFrameHandler.Default

protected abstract static class Advice.StackMapFrameHandler.Default.WithPreservedArguments extends Advice.StackMapFrameHandler.Default
A stack map frame handler that requires the original arguments of the instrumented method to be preserved in their original form.
  • Field Details

    • allowCompactCompletionFrame

      protected boolean allowCompactCompletionFrame
      true if a completion frame for the method bust be a full frame to reflect an initialization change.
  • Constructor Details

    • WithPreservedArguments

      protected WithPreservedArguments(TypeDescription instrumentedType, MethodDescription instrumentedMethod, List<? extends TypeDescription> initialTypes, List<? extends TypeDescription> latentTypes, List<? extends TypeDescription> preMethodTypes, List<? extends TypeDescription> postMethodTypes, boolean expandFrames, boolean allowCompactCompletionFrame)
      Creates a new stack map frame handler that requires the stack map frames of the original arguments to be preserved.
      Parameters:
      instrumentedType - The instrumented type.
      instrumentedMethod - The instrumented method.
      initialTypes - A list of virtual method arguments that are explicitly added before any code execution.
      latentTypes - A list of virtual arguments that are available after the enter advice method is executed.
      preMethodTypes - A list of virtual method arguments that are available before the instrumented method is executed.
      postMethodTypes - A list of virtual method arguments that are available after the instrumented method has completed.
      expandFrames - true if the meta data handler is expected to expand its frames.
      allowCompactCompletionFrame - true if a completion frame for the method bust be a full frame to reflect an initialization change.
  • Method Details

    • translateFrame

      protected void translateFrame(org.objectweb.asm.MethodVisitor methodVisitor, Advice.StackMapFrameHandler.Default.TranslationMode translationMode, MethodDescription methodDescription, List<? extends TypeDescription> additionalTypes, int type, int localVariableLength, @MaybeNull Object[] localVariable, int stackSize, @MaybeNull Object[] stack)
      Description copied from class: Advice.StackMapFrameHandler.Default
      Translates a frame.
      Overrides:
      translateFrame in class Advice.StackMapFrameHandler.Default
      Parameters:
      methodVisitor - The method visitor to write the frame to.
      translationMode - The translation mode to apply.
      methodDescription - The method description for which the frame is written.
      additionalTypes - The additional types to consider part of the instrumented method's parameters.
      type - The frame's type.
      localVariableLength - The local variable length.
      localVariable - An array containing the types of the current local variables.
      stackSize - The size of the operand stack.
      stack - An array containing the types of the current operand stack.
    • bindExit

      Binds this meta data handler for the exit advice.
      Parameters:
      adviceMethod - The exit advice method.
      Returns:
      An appropriate meta data handler for the enter method.
    • injectReturnFrame

      public void injectReturnFrame(org.objectweb.asm.MethodVisitor methodVisitor)
      Injects a frame indicating the beginning of a return value handler for the currently handled method.
      Parameters:
      methodVisitor - The method visitor onto which to apply the stack map frame.
    • injectExceptionFrame

      public void injectExceptionFrame(org.objectweb.asm.MethodVisitor methodVisitor)
      Injects a frame indicating the beginning of an exception handler for the currently handled method.
      Parameters:
      methodVisitor - The method visitor onto which to apply the stack map frame.
    • injectCompletionFrame

      public void injectCompletionFrame(org.objectweb.asm.MethodVisitor methodVisitor)
      Injects a frame indicating the completion of the currently handled method, i.e. all yielded types were added.
      Parameters:
      methodVisitor - The method visitor onto which to apply the stack map frame.
    • injectPostCompletionFrame

      public void injectPostCompletionFrame(org.objectweb.asm.MethodVisitor methodVisitor)
      Injects a frame indicating the completion of the currently handled method, i.e. all yielded types were added.
      Parameters:
      methodVisitor - The method visitor onto which to apply the stack map frame.
    • injectInitializationFrame

      public void injectInitializationFrame(org.objectweb.asm.MethodVisitor methodVisitor)
      Injects a frame after initialization if any initialization is performed.
      Parameters:
      methodVisitor - The method visitor to write any frames to.