Class Advice.StackMapFrameHandler.Default.WithPreservedArguments

    • Field Detail

      • allowCompactCompletionFrame

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

      • WithPreservedArguments

        protected WithPreservedArguments​(TypeDescription instrumentedType,
                                         MethodDescription instrumentedMethod,
                                         java.util.List<? extends TypeDescription> initialTypes,
                                         java.util.List<? extends TypeDescription> preMethodTypes,
                                         java.util.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.
        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 Detail

      • translateFrame

        protected void translateFrame​(org.objectweb.asm.MethodVisitor methodVisitor,
                                      Advice.StackMapFrameHandler.Default.TranslationMode translationMode,
                                      MethodDescription methodDescription,
                                      java.util.List<? extends TypeDescription> additionalTypes,
                                      int type,
                                      int localVariableLength,
                                      java.lang.Object[] localVariable,
                                      int stackSize,
                                      java.lang.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.
      • 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.