inlineable exists as a separate item, but is compiled as part of the calling code when called from another method or procedure. Inlining a method can improve performance by:
Embedded code is incompatible with asynchronous and recursive invocation, so the code for an inlineable method is actually inlined only for a nonrecursive call. Inlineable methods exist as ordinary items; starts and recursive calls to them are handled just as if the method were not inlineable.
Declaring a method as inlineable requires the additional stable-hierarchy and the stable-for-dependent-compilation configuration. Declaring a method as
stable-hierarchy implies that a more specialized method will not be added below the current method in the method hierarchy. If the method includes any return values, the stable-hierarchy declaration additionally guarantees the return value types.
To declare that a method be inlined:
Add these item configurations:
declare properties as follows: inlineable, stable-hierarchy,
stable-for-dependent-compilation
stable-hierarchy and stable-for-dependent-compilation can be applied to a workspace. Whenever configurations are applied to a workspace, their effects propagate to every applicable item (methods in this case) upon the workspace, and all item subworkspaces. Item-configuration of a method to include these properties, the Notes attribute of the method changes to read:
OK, and note that this item needs to be recompiled to generate data needed for inlining
To recompile the inlineable method:
edit from the table item menu of the method attribute table. G2 displays this dialog, because the method has been declared as stable:
![]() |
Notes status will be OK.
To test for an inlined method:
Tracing-and-breakpoints-enabled? attribute to yes.
Tracing-message-level attribute to:
1 (trace messages on entry and exit)
inlineable and stable-hierarchy configurations, see Using Compilation Configurations.