Annotation Interface EpilogReturn


@Retention(SOURCE) @Target(TYPE) public @interface EpilogReturn
Defines a return epilog operation. This epilog executes before returning a value (whereas the exceptional epilog handles uncaught Truffle exceptions).

A return epilog operation is defined the same way as an Operation. It has the additional restriction that its specializations must take one operand (the returned value) and must return a value. The return value (which can simply be the input operand) is returned from the root node.

The return epilog is guarded by exception intercept methods (e.g., BytecodeRootNode.interceptInternalException(Throwable, VirtualFrame, BytecodeNode, int)) as well as any language-level exception handlers guarding the return, including the exceptional epilog, if present.

Since:
24.2
See Also:
  • Optional Element Summary

    Optional Elements
    Modifier and Type
    Optional Element
    Description
    boolean
    Indicates whether this operation requires the bytecode index to be updated.
  • Element Details

    • storeBytecodeIndex

      boolean storeBytecodeIndex
      Indicates whether this operation requires the bytecode index to be updated. By default, the DSL assumes that all operations with caches require the bytecode index to be updated. The DSL will emit a warning if specifying this attribute is necessary.

      If this attribute has been set to false, then the StoreBytecodeIndex annotation can be used to enable this property for individual Specialization or Fallback-annotated methods.

      This annotation only has an effect if GenerateBytecode.storeBytecodeIndexInFrame() is set to true or if the uncached interpreter tier is enabled.

      Since:
      25.1
      See Also:
      Default:
      true