On Wed, 8 Mar 2023 23:11:34 GMT, Mandy Chung <mch...@openjdk.org> wrote:
>> Improvements to support OS specific customization for JDK internal use: >> - To select values and code; allowing elimination of unused code and values >> - Optionally evaluated by build processes, compilation, or archiving (i.e. >> CDS) >> - Simple API to replace adhoc comparisons with `os.name` >> - Clear and consistent use across build, runtime, and JDK modules >> >> The PR includes updates within java.base to use the new API. > > src/java.base/share/classes/jdk/internal/misc/OperatingSystem.java line 98: > >> 96: @ForceInline >> 97: public static boolean isLinux() { >> 98: return OperatingSystemProps.TARGET_OS_IS_LINUX; > > Suggestion: > > return OperatingSystemProps.CURRENT_OS_ORDINAL == Linux.ordinal(); > > > This will also simplify the template file as `TARGET_OS_IS_XXX` constants are > not needed. > > Also suggest to rename `TARGET_OS_ORDINAL` to `CURRENT_OS_ORDINAL` since it > represents the current OS (vs the build target). That would not yield a compile time constant. The TARGET_IS_XXX values must evaluate to compile time constants as evaluated by javac. > src/java.base/share/classes/jdk/internal/misc/OperatingSystemProps.java.template > line 29: > >> 27: * @see OperatingSystem >> 28: */ >> 29: class OperatingSystemProps { > > Have you considered to include OS architecture here for future use? So this > file be `PlatformProps.java.template` instead. > > `jdk.tools.jlink.internal.Platform` needs to get the runtime OS and > architecture. I plan to come back to os.arch, it has a similar but not identical requirements. ------------- PR: https://git.openjdk.org/jdk/pull/12931