On Thu, 15 Oct 2020 15:00:47 GMT, Bernhard Urban-Forster <bur...@openjdk.org> wrote:
> Use r18 as allocatable register on Linux only. > > A bootstrap works now (it has been crashing before due to r18 being > allocated): > $ > ./windows-aarch64-server-fastdebug/bin/java.exe > -XX:+UnlockExperimentalVMOptions -XX:+UseJVMCICompiler -XX:+BootstrapJVMCI > -version > Bootstrapping JVMCI................................. in 17990 ms (compiled > 3330 methods) > openjdk version "16-internal" 2021-03-16 > OpenJDK Runtime Environment (fastdebug build > 16-internal+0-adhoc.NORTHAMERICAbeurba.openjdk-jdk) > OpenJDK 64-Bit Server VM (fastdebug build > 16-internal+0-adhoc.NORTHAMERICAbeurba.openjdk-jdk, mixed mode) > > Jtreg tests `test/hotspot/jtreg/compiler/jvmci` are passing as well. src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot.aarch64/src/jdk/vm/ci/hotspot/aarch64/AArch64HotSpotRegisterConfig.java line 126: > 124: public static final Register metaspaceMethodRegister = r12; > 125: > 126: public static final Register platformRegister = r18; There should be a comment here as "platform register" is rather ambiguous. src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot.aarch64/src/jdk/vm/ci/hotspot/aarch64/AArch64HotSpotRegisterConfig.java line 133: > 131: private static final RegisterArray reservedRegisters = new > RegisterArray(rscratch1, rscratch2, threadRegister, > fp, lr, r31, zr, sp); 132: > 133: private static RegisterArray initAllocatable(Architecture arch, > boolean reserveForHeapBase, boolean linuxOs) { Instead of `linuxOs`, `canUsePlatformRegister` is a better name. The logic of which OS does what belongs more in AArch64HotSpotJVMCIBackendFactory. ------------- PR: https://git.openjdk.java.net/jdk/pull/685