Package net.bytebuddy.asm
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.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected static class
A stack map frame handler that expects that an argument copy of the original method arguments was made.protected static class
A stack map frame handler that expects that the original argument frames remain preserved throughout the original invocation.Nested classes/interfaces inherited from class net.bytebuddy.asm.Advice.StackMapFrameHandler.Default
Advice.StackMapFrameHandler.Default.ForAdvice, Advice.StackMapFrameHandler.Default.Initialization, Advice.StackMapFrameHandler.Default.TranslationMode, Advice.StackMapFrameHandler.Default.Trivial, Advice.StackMapFrameHandler.Default.WithPreservedArguments
Nested classes/interfaces inherited from interface net.bytebuddy.asm.Advice.StackMapFrameHandler
Advice.StackMapFrameHandler.Default, Advice.StackMapFrameHandler.ForInstrumentedMethod, Advice.StackMapFrameHandler.ForPostProcessor, Advice.StackMapFrameHandler.NoOp
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected boolean
true
if a completion frame for the method bust be a full frame to reflect an initialization change.Fields inherited from class net.bytebuddy.asm.Advice.StackMapFrameHandler.Default
currentFrameDivergence, EMPTY, expandFrames, initialTypes, instrumentedMethod, instrumentedType, latentTypes, postMethodTypes, preMethodTypes
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
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. -
Method Summary
Modifier and TypeMethodDescriptionbindExit
(MethodDescription.TypeToken typeToken) Binds this metadata handler for the exit advice.void
injectCompletionFrame
(org.objectweb.asm.MethodVisitor methodVisitor) Injects a frame indicating the completion of the currently handled method, i.e.void
injectExceptionFrame
(org.objectweb.asm.MethodVisitor methodVisitor) Injects a frame indicating the beginning of an exception handler for the currently handled method.void
injectInitializationFrame
(org.objectweb.asm.MethodVisitor methodVisitor) Injects a frame after initialization if any initialization is performed.void
injectPostCompletionFrame
(org.objectweb.asm.MethodVisitor methodVisitor) Injects a frame indicating the completion of the currently handled method, i.e.void
injectReturnFrame
(org.objectweb.asm.MethodVisitor methodVisitor) Injects a frame indicating the beginning of a return value handler for the currently handled method.protected void
translateFrame
(org.objectweb.asm.MethodVisitor methodVisitor, Advice.StackMapFrameHandler.Default.TranslationMode translationMode, boolean isStatic, MethodDescription.TypeToken typeToken, List<? extends TypeDescription> additionalTypes, int type, int localVariableLength, Object[] localVariable, int stackSize, Object[] stack) Translates a frame.Methods inherited from class net.bytebuddy.asm.Advice.StackMapFrameHandler.Default
bindEnter, getReaderHint, injectFullFrame, of
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface net.bytebuddy.asm.Advice.StackMapFrameHandler
translateFrame
Methods inherited from interface net.bytebuddy.asm.Advice.StackMapFrameHandler.ForInstrumentedMethod
injectStartFrame
-
Field Details
-
allowCompactCompletionFrame
protected boolean allowCompactCompletionFrametrue
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, boolean isStatic, MethodDescription.TypeToken typeToken, 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 classAdvice.StackMapFrameHandler.Default
- Parameters:
methodVisitor
- The method visitor to write the frame to.translationMode
- The translation mode to apply.isStatic
-true
if the targeted type token represents a static method.typeToken
- A type token for 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 metadata handler for the exit advice.- Parameters:
typeToken
- The type token representing the advice method.- Returns:
- An appropriate metadata 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.
-