The heap base register, i.e. r27, should be reserved unconditionally because HotSpot does not intend to support it as an allocatable register even when compressed oops is off. This register is excluded from callee-saved register at cpu/aarch64/sharedRuntime_aarch64.cpp:RegisterSaver::save_live_registers, which may lead to dereferencing unknown value from the stack at share/runtime/stackValue.cpp:StackValue::create_stack_value during deoptimization.
We should make the conditional reserve at http://hg.openjdk.java.net/jdk/jdk/file/b25362cec8ce/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot.aarch64/src/jdk/vm/ci/hotspot/aarch64/AArch64HotSpotRegisterConfig.java#l143 unconditional.
Original GitHub issue at https://github.com/oracle/graal/issues/1704
We should make the conditional reserve at http://hg.openjdk.java.net/jdk/jdk/file/b25362cec8ce/src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot.aarch64/src/jdk/vm/ci/hotspot/aarch64/AArch64HotSpotRegisterConfig.java#l143 unconditional.
Original GitHub issue at https://github.com/oracle/graal/issues/1704
- relates to
-
JDK-8233743 AArch64: Make r27 conditionally allocatable
-
- Resolved
-