Optionally use VarHandles for Lazy Vals when targeting JDK 9+ #637
+229
−35
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Backports scala#24109 to LTS 3.3, but also keeps existing offset-based implementation.
VarHandles are used if either explicitly targeting JDK 9+ (using
--java-output-version) or when using implicit releae-versions and using JDK 9When using VarHandles additional static class initializers
<clint>might be generated, where previously these were not needed (see MiMa filter added for scala.Tuple) however, this change is likely a binary compatible. The JVM owns class initialization and there is never an explicit call site to in user bytecode, so link/load will still succeed.