Class 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.
    • 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:
        isValid in interface StackManipulation
        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:
        apply in interface StackManipulation
        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.