Annotation Interface Prolog


@Retention(SOURCE) @Target(TYPE) public @interface Prolog
Defines a prolog operation that executes before the body of a Root operation.

A prolog operation is defined the same way as an Operation. It has the additional restriction that it must have no dynamic operands and must declare a void return type. It can declare constant operands.

The prolog is guarded by exception intercept methods (e.g., BytecodeRootNode.interceptInternalException(Throwable, VirtualFrame, BytecodeNode, int)) as well as the exceptional epilog, if present.

When Tag instrumentation is enabled, the prolog will execute after root probes and before root body probes.

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