Package net.bytebuddy.asm
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 java.lang.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 Classes Modifier and Type Class Description protected static classAdvice.AssignReturned.DefaultValueSkip.DispatcherA dispatcher for skipping a default value.-
Nested classes/interfaces inherited from interface net.bytebuddy.implementation.bytecode.StackManipulation
StackManipulation.AbstractBase, StackManipulation.Compound, StackManipulation.Illegal, StackManipulation.Simple, StackManipulation.Size, StackManipulation.Trivial
-
-
Field Summary
Fields Modifier and Type Field Description private Advice.AssignReturned.DefaultValueSkip.DispatcherdispatcherThe dispatcher to use.private intoffsetThe offset of the value of the returned type.private StackManipulationstackManipulationThe wrapped stack manipulation in case the value is not a default value.private Advice.StackMapFrameHandler.ForPostProcessorstackMapFrameHandlerThe stack map frame handler to use.
-
Constructor Summary
Constructors Modifier Constructor Description protectedDefaultValueSkip(StackManipulation stackManipulation, Advice.StackMapFrameHandler.ForPostProcessor stackMapFrameHandler, int offset, Advice.AssignReturned.DefaultValueSkip.Dispatcher dispatcher)Creates a null-check wrapper.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description StackManipulation.Sizeapply(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 Detail
-
stackManipulation
private final StackManipulation stackManipulation
The wrapped stack manipulation in case the value is not a default value.
-
stackMapFrameHandler
private final Advice.StackMapFrameHandler.ForPostProcessor stackMapFrameHandler
The stack map frame handler to use.
-
offset
private final int offset
The offset of the value of the returned type.
-
dispatcher
private final Advice.AssignReturned.DefaultValueSkip.Dispatcher dispatcher
The dispatcher to use.
-
-
Constructor Detail
-
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 Detail
-
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.
-
-