Annotation Interface GenerateInline
Generates code for a node that makes this node inlinable when used in
cached
parameters of specializations. Inlining nodes significantly reduces the
footprint of cached nodes as node allocations are avoided.
A node subclass must fullfill the following requirements in order to be inlinable:
- All execute methods of a the node must have a
nodeas first parameter type. - The node has no instance fields and must not use
NodeChildorNodeField. - The cached node types must not be recursive.
InlineSupport for details.
Please see the
node
object inlining tutorial for details on how to use this annotation.- Since:
- 23.0
- See Also:
-
Optional Element Summary
Optional ElementsModifier and TypeOptional ElementDescriptionbooleanbooleanIftruethe inlined version is used by default when the node is used as acachedargument.booleanIftrueenables the generation of a inlined version of thisspecializingnode.
-
Element Details
-
value
boolean valueIftrueenables the generation of a inlined version of thisspecializingnode. It is enabled by default.- Since:
- 23.0
- Default:
true
-
inherit
boolean inherit- Since:
- 23.0
- Default:
false
-
inlineByDefault
boolean inlineByDefaultIftruethe inlined version is used by default when the node is used as acachedargument. Changing this value on an existing node class with existing and already compiled usages will not force the recompilation of the usages. One has to manually force recompilation of all the affected code. If the node class is part of supported public API, changing this value is a source incompatible change!- Since:
- 23.0
- Default:
false
-