-
Bug
-
Resolution: Fixed
-
P4
-
9
-
None
-
b141
The method handle implementation machinery expresses the semantics of method handles by embodying them in LambdaForm instances. These support two execution modes: direct interpretation of LambdaForms, and compilation of LambdaForms to bytecodes.
The latter execution mode is the default, and is thus regularly tested. The former, which needs to be explicitly enabled by passing the command line argument -Djava.lang.invoke.MethodHandle.COMPILATION_THRESHOLD=-1 (effectively disabling LambdaForm compilation to bytecodes), is not covered by automated tests. It is, on occasion, used in manual testing.
This situation is undesirable, as the LambdaForm interpreter mode is supposed to cover the full semantics of method handles correctly, just as the generated bytecode.
The latter execution mode is the default, and is thus regularly tested. The former, which needs to be explicitly enabled by passing the command line argument -Djava.lang.invoke.MethodHandle.COMPILATION_THRESHOLD=-1 (effectively disabling LambdaForm compilation to bytecodes), is not covered by automated tests. It is, on occasion, used in manual testing.
This situation is undesirable, as the LambdaForm interpreter mode is supposed to cover the full semantics of method handles correctly, just as the generated bytecode.