Annotation Interface EpilogExceptional


@Retention(SOURCE) @Target(TYPE) public @interface EpilogExceptional
Defines an exceptional epilog operation. This epilog executes when an uncaught Truffle exception is thrown (whereas the return epilog executes before returning normally).

An exceptional epilog operation is defined the same way as an Operation. It has the additional restriction that its specializations must take one operand (the exception), which must be of type AbstractTruffleException or a subtype. The return type must also be void.

The exceptional epilog is guarded by exception intercept methods (e.g., BytecodeRootNode.interceptInternalException(Throwable, VirtualFrame, BytecodeNode, int)), but not language-level exception handlers.

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