@Retention(value=CLASS) @Target(value=TYPE) public @interface GenerateInline
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:
node
as first parameter type.
NodeChild
or NodeField
.
InlineSupport
for details.
Please see the
node
object inlining tutorial for details on how to use this annotation.GenerateCached
,
GenerateUncached
,
GenerateAOT
,
InlineSupport
Modifier and Type | Optional Element and Description |
---|---|
boolean |
inherit
If
true enables inheritance of GenerateInline.value() and GenerateInline.inlineByDefault()
to subclasses. |
boolean |
inlineByDefault
If
true the inlined version is used by default when the node is used as a
cached argument. |
boolean |
value
If
true enables the generation of a inlined version of this
specializing node. |
public abstract boolean value
true
enables the generation of a inlined version of this
specializing
node. It is enabled by default.public abstract boolean inherit
true
enables inheritance of GenerateInline.value()
and GenerateInline.inlineByDefault()
to subclasses. It is false
by default.public abstract boolean inlineByDefault
true
the inlined version is used by default when the node is used as a
cached
argument.
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!