RFR: 8273774: jdk.tools.jlink.internal.Platform::is64Bit() should not hard code for x64 and AARCH64
Mandy Chung
mchung at openjdk.java.net
Wed Sep 15 16:57:53 UTC 2021
On Wed, 15 Sep 2021 06:28:25 GMT, Remilia Scarlet <github.com+22913521+1996scarlet at openjdk.org> wrote:
> Currently, the Platform.is64Bit() hard coded for judging whether the target arch is 64-bit.
> The `classes_nocoops.jsa not found` issue can be found while testing CDSPluginTest.java on 64-bit platform, excluding x64 and AARCH64, like mips64.
>
> For solving this issue, we assume that the bits of target UNKNOWN arch is same as the runtime platform.
> This patch adds the following lines in the Platform.is64Bit() method.
>
> ``` java
> if (arch() == Platform.Architecture.UNKNOWN) {
> return (System.getProperty("os.arch").indexOf("64") != -1);
> }
>
>
> Please review this change. Thanks!
The test assumes that it always runs on 64-bit platform and `classes_nocoops.jsa` is always created. It's a test bug. The test should only expect `classes_nocoops.jsa` exists if it's running on a supported 64-bit platform.
Platform::is64Bit can do better for runtime platform (i.e. `Platform::runtime`) that can determine if it's 64-bit from the `sun.arch.data.model` system property. However, for unknown target platform, it's unknown if it's 64-bit or not. So I think fixing the test to check if `classes_nocoops.jsa` exists only on one of the JDK supported platforms (x64 or aarch64) is a better way to resolve your issue.
-------------
PR: https://git.openjdk.java.net/jdk/pull/5519
More information about the core-libs-dev
mailing list