RFR: 8346778: Enable native access should work with the source launcher [v2]

Christian Stein cstein at openjdk.org
Mon Jan 13 11:29:07 UTC 2025


On Wed, 8 Jan 2025 20:29:03 GMT, Christian Stein <cstein at openjdk.org> wrote:

>> Please review this change request enabling native access in source launch mode when using a modular setup.
>> 
>> The change comes in two parts:
>> 1. Prevent warnings of unknown modules being emitted from module bootstrap for user module not being present in the boot layer: `java.c` and `ModuleBootstrap.java`
>> 2. Enable native access in source module(s) and also user modules on the module path as requested by `--enable-native-access` via the `ModuleLayer.Controller` API - and emit warning for unknown modules: `MemoryContext.java`
>> 
>> _Testing of tier1..3 is in progress..._
>
> Christian Stein has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Ignore already handled `ALL-UNNAMED` name

Submit improvements as suggested.

src/java.base/share/classes/jdk/internal/module/ModuleBootstrap.java line 838:

> 836:      * command line option, and also to JDK modules that need the access.
> 837:      * <p>
> 838:      * In case of being in "source" launchmode, warnings about unknown modules are

Suggestion:

     * In case of being in "source" launcher mode, warnings about unknown modules are

src/java.base/share/classes/jdk/internal/module/ModuleBootstrap.java line 844:

> 842:     private static void addEnableNativeAccess(ModuleLayer layer) {
> 843:         String launchMode = getAndRemoveProperty("jdk.internal.java.launchmode");
> 844:         boolean shouldWarn = !"source".equals(launchMode);

Suggestion:

        String launcherMode = getAndRemoveProperty("sun.java.launcher.mode");
        boolean shouldWarn = !"source".equals(launcherMode);

src/java.base/share/native/libjli/java.c line 1376:

> 1374:     if (mode == LM_SOURCE) {
> 1375:         // signal module bootstrap to defer warnings about unknown modules
> 1376:         AddOption("-Djdk.internal.java.launchmode=source", NULL);

Suggestion:

        // communicate the launcher mode to runtime
        AddOption("-Dsun.java.launcher.mode=source", NULL);

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

PR Review: https://git.openjdk.org/jdk/pull/22930#pullrequestreview-2546345699
PR Review Comment: https://git.openjdk.org/jdk/pull/22930#discussion_r1913035292
PR Review Comment: https://git.openjdk.org/jdk/pull/22930#discussion_r1913038153
PR Review Comment: https://git.openjdk.org/jdk/pull/22930#discussion_r1913037463


More information about the compiler-dev mailing list