RFR: 8336489: Track scoped accesses in JVMCI compiled code

Doug Simon dnsimon at openjdk.org
Fri Jul 19 16:33:31 UTC 2024


On Fri, 19 Jul 2024 14:46:38 GMT, Carlo Refice <duke at openjdk.org> wrote:

> This PR adds JVMCI support to scoped access tracking introduced in #20158.
> 
> In this PR:
> * The `Method::is_scoped` flag is now exposed in JVMCI as `HotSpotResolvedJavaMethod.isScoped()`, and serialized to / deserialized from the JVMCI compiled code stream as a boolean flag.
> * To determine whether a compiled method has a scoped access, we simply check `HotSpotResolvedJavaMethod.isScoped()` returns `true` for the root method or any of the methods that were inlined in the compilation.
> * The above check is implemented as the method `HotSpotCompiledNMethod.hasScopedAccess()`, instead of as an explicit flag set in a the constructor of `HotSpotCompiledNMethod`. This keeps the change isolated to JVMCI, without requiring coordinated changes to the Graal compiler. No other changes in the compiler are necessary to benefit from the optimization.

src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotResolvedJavaMethod.java line 62:

> 60: 
> 61:     /**
> 62:      * Returns true if this method has a {@code Scoped} annotation.

Please spell out where exactly the annotation is defined to avoid confusion with the unrelated concept of `java.lang.ScopedValue`:

     * Returns true if this method has a {@code jdk.internal.misc.ScopedMemoryAccess.Scoped} annotation.

src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotResolvedJavaMethodImpl.java line 327:

> 325:     }
> 326: 
> 327:     /**

No need for javadoc here - it's inherited from `HotSpotResolvedJavaMethod`.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/20256#discussion_r1684614037
PR Review Comment: https://git.openjdk.org/jdk/pull/20256#discussion_r1684615495


More information about the hotspot-compiler-dev mailing list