Class Advice.AssignReturned.DefaultValueSkip
java.lang.Object
net.bytebuddy.asm.Advice.AssignReturned.DefaultValueSkip
- All Implemented Interfaces:
StackManipulation
- Enclosing class:
Advice.AssignReturned
@Enhance
protected static class Advice.AssignReturned.DefaultValueSkip
extends Object
implements StackManipulation
A stack manipulation that applies a null-check on the returned value which indicates if an assignment
should be skipped, if discovered.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected static enumA dispatcher for skipping a default value.Nested classes/interfaces inherited from interface StackManipulation
StackManipulation.AbstractBase, StackManipulation.Compound, StackManipulation.Illegal, StackManipulation.Simple, StackManipulation.Size, StackManipulation.Trivial -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final Advice.AssignReturned.DefaultValueSkip.DispatcherThe dispatcher to use.private final intThe offset of the value of the returned type.private final StackManipulationThe wrapped stack manipulation in case the value is not a default value.private final Advice.StackMapFrameHandler.ForPostProcessorThe stack map frame handler to use. -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedDefaultValueSkip(StackManipulation stackManipulation, Advice.StackMapFrameHandler.ForPostProcessor stackMapFrameHandler, int offset, Advice.AssignReturned.DefaultValueSkip.Dispatcher dispatcher) Creates a null-check wrapper. -
Method Summary
Modifier and TypeMethodDescriptionapply(org.objectweb.asm.MethodVisitor methodVisitor, Implementation.Context implementationContext) Applies the stack manipulation that is described by this instance.booleanisValid()Determines if this stack manipulation is valid.protected static StackManipulationof(StackManipulation stackManipulation, Advice.StackMapFrameHandler.ForPostProcessor stackMapFrameHandler, int offset, TypeDefinition typeDefinition) Resolves a skipping stack manipulation for the supplied type.
-
Field Details
-
stackManipulation
The wrapped stack manipulation in case the value is not a default value. -
stackMapFrameHandler
The stack map frame handler to use. -
offset
private final int offsetThe offset of the value of the returned type. -
dispatcher
The dispatcher to use.
-
-
Constructor Details
-
DefaultValueSkip
protected DefaultValueSkip(StackManipulation stackManipulation, Advice.StackMapFrameHandler.ForPostProcessor stackMapFrameHandler, int offset, Advice.AssignReturned.DefaultValueSkip.Dispatcher dispatcher) Creates a null-check wrapper.- Parameters:
stackManipulation- The wrapped stack manipulation in case the value is not a default value.stackMapFrameHandler- The stack map frame handler to use.offset- The offset of the value of the returned type.dispatcher- The dispatcher to use.
-
-
Method Details
-
of
protected static StackManipulation of(StackManipulation stackManipulation, Advice.StackMapFrameHandler.ForPostProcessor stackMapFrameHandler, int offset, TypeDefinition typeDefinition) Resolves a skipping stack manipulation for the supplied type.- Parameters:
stackManipulation- The stack manipulation to wrap.stackMapFrameHandler- The stack map frame handler to use.offset- The offset of the value of the returned type.typeDefinition- The type that is returned by the advice method.- Returns:
- A suitable stack manipulation.
-
isValid
public boolean isValid()Determines if this stack manipulation is valid.- Specified by:
isValidin interfaceStackManipulation- Returns:
- If
false, this manipulation cannot be applied and should throw an exception.
-
apply
public StackManipulation.Size apply(org.objectweb.asm.MethodVisitor methodVisitor, Implementation.Context implementationContext) Applies the stack manipulation that is described by this instance.- Specified by:
applyin interfaceStackManipulation- Parameters:
methodVisitor- The method visitor used to write the method implementation to.implementationContext- The context of the current implementation.- Returns:
- The changes to the size of the operand stack that are implied by this stack manipulation.
-