arm32 status
Aleksey Shipilev
shade at redhat.com
Tue Feb 2 16:03:54 UTC 2021
Hi,
On 2/2/21 4:53 PM, Peter Johnson wrote:
> Is anyone actively working on arm32 support? The wiki says "in
> development, help wanted" and Aleksey’s Sept 2019 presentation says
> "prototyping," but it doesn’t appear like there’s anything committed in
> hotspot/cpu/arm/gc. Does anyone have a work in progress on a personal fork?
I had started it at pre-COVID times, but then we had to stabilize ARM32 itself. Once we reached some
level of ARM32 stability, other things preempted further ARM32 work. I have restarted the ARM32 port
work yesterday, but -- kid you not -- I have to stabilize ARM32 itself before continuing! Such is life.
So the bird-eye-view status is: the port is not even in alpha stage.
What is your interest? Are you willing to contribute the port? :)
> Is the scope essentially porting what’s in
> hotspot/cpu/aarch64/gc/shenandoah to arm32, or is there more to it?
Pretty much, yes. Plus some minor shared code changes to accept ARM32 for Shenandoah:
diff -r 3b9b5cb7586f make/autoconf/jvm-features.m4
--- a/make/autoconf/jvm-features.m4 Thu Feb 27 12:19:24 2020 +0800
+++ b/make/autoconf/jvm-features.m4 Thu Feb 27 13:08:32 2020 +0100
@@ -353,7 +353,8 @@
JVM_FEATURES_CHECK_AVAILABILITY(shenandoahgc, [
AC_MSG_CHECKING([if platform is supported by Shenandoah])
if test "x$OPENJDK_TARGET_CPU_ARCH" = "xx86" || \
- test "x$OPENJDK_TARGET_CPU" = "xaarch64" ; then
+ test "x$OPENJDK_TARGET_CPU" = "xaarch64" || \
+ test "x$OPENJDK_TARGET_CPU" = "xarm" ; then
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no, $OPENJDK_TARGET_CPU])
diff -r 3b9b5cb7586f src/hotspot/share/gc/shenandoah/shenandoahArguments.cpp
--- a/src/hotspot/share/gc/shenandoah/shenandoahArguments.cpp Thu Feb 27 12:19:24 2020 +0800
+++ b/src/hotspot/share/gc/shenandoah/shenandoahArguments.cpp Thu Feb 27 13:08:32 2020 +0100
@@ -32,7 +32,7 @@
#include "utilities/defaultStream.hpp"
void ShenandoahArguments::initialize() {
-#if !(defined AARCH64 || defined AMD64 || defined IA32)
+#if !(defined AARCH64 || defined AMD64 || defined IA32 || defined ARM32)
vm_exit_during_initialization("Shenandoah GC is not supported on this platform.");
#endif
@@ -41,7 +41,8 @@
log_warning(gc)(" concurrent modes are not supported, only STW cycles are enabled;");
log_warning(gc)(" arch-specific barrier code is not implemented, disabling barriers;");
- FLAG_SET_DEFAULT(ShenandoahGCHeuristics, "passive");
+ FLAG_SET_DEFAULT(UnlockDiagnosticVMOptions, true);
+ FLAG_SET_DEFAULT(ShenandoahGCMode, "passive");
FLAG_SET_DEFAULT(ShenandoahSATBBarrier, false);
FLAG_SET_DEFAULT(ShenandoahLoadRefBarrier, false);
@@ -50,8 +51,10 @@
FLAG_SET_DEFAULT(ShenandoahCASBarrier, false);
FLAG_SET_DEFAULT(ShenandoahCloneBarrier, false);
+#ifdef ASSERT
FLAG_SET_DEFAULT(ShenandoahVerifyOptoBarriers, false);
#endif
+#endif
Once these two test suites succeed, you are pretty much done:
$ CONF=linux-arm-server-fastdebug make images run-test TEST=hotspot_gc_shenandoah
$ CONF=linux-arm-server-fastdebug make images run-test TEST=tier1 TEST_VM_OPTS=-XX:+UseShenandoahGC
--
Thanks,
-Aleksey
More information about the shenandoah-dev
mailing list