Annotation Interface Instrumentation
Instrumentations are emitted like regular operations with the builder
,
but only generate instructions if they are enabled in the BytecodeConfig
. A bytecode
config with enabled instrumentations can be provided at parse time, when deserializing or using
the update
method at any time.
Unlike regular operations, instrumentations must have transparent stack effects. This is
important to ensure that that the stack layout remains compatible when instrumentations are
enabled at runtime. This means that instrumentations can either have no dynamic operands and no
return value or one dynamic operand and one return value. Note that instrumentations can declare
constant operands
since those do not affect the stack.
Instrumentations with one operand and return value may freely modify values observed at runtime.
Boxing elimination
is reset when new
instrumentations are enabled, but it will also work for instrumentation operations.
Note that instrumentations cannot specify any tags
, because tags must be
stable and new tags cannot be specified at runtime. Instrumentations can also not be used as
boolean converters for short circuits
.
- Since:
- 24.2
-
Optional Element Summary
Optional ElementsModifier and TypeOptional ElementDescriptionboolean
Whether executing this operation should force the uncached interpreter (if enabled) to transition to cached.Optional documentation for the instrumentation.
-
Element Details
-
forceCached
boolean forceCachedWhether executing this operation should force the uncached interpreter (if enabled) to transition to cached.- Since:
- 24.2
- See Also:
- Default:
false
-
javadoc
String javadocOptional documentation for the instrumentation. This documentation is included in the javadoc for the generated interpreter.- Since:
- 24.2
- Default:
""
-