RFR: AArch64: JDK-8241665: Configuring --with-jvm-features=-compiler2 fails to build on AArch64

Andrew Dinn adinn at redhat.com
Fri Mar 27 10:28:27 UTC 2020


Can I please have reviews for this fix which enables AARch64 to build
when the compiler2 is excluded as a build feature:

  JIRA:   https://bugs.openjdk.java.net/browse/JDK-8241665
  webrev: http://cr.openjdk.java.net/~adinn/8241665/webrev.00/

I think this should go through even though some of the testing failed
for what I believe are issues in shared code (if nothing else, fixing
this is the only way to investigate the test failures on AArch64). See
below for further details.

Testing:

Built an AArch64 image with compiler2 feature omitted
Compiled and ran HelloWorld.
Ran tier1 tests (for the LOLs :-)

  - Most tests passed including most of the compiler (and C2 compiler
tests!).
  - There were expected failures in c2 tests and some explicable
failures in other compiler tests and serviceability tests
  - A few bignum tests failed because of timeouts.
  - Interestingly quite a few JVMCI tests failed.

The JVMCI tests do not look to be anything to do with the AArch64 fix or
to be Aarch64-specific. So, I don't recommend stopping this patch going
trough because of them. However, since JVMCI support is supposed to work
decoupled from COMPILER2 support they suggest that this decoupling has
not been correctly implemented and needs looking into as a follow-up.
Here are the failed tests (basic details of the error are provided
afterwards labelled with letters).

    1) compiler/jvmci/compilerToVM/IsCompilableTest.java [a]
    2) compiler/jvmci/compilerToVM/IsMatureVsReprofileTest.java [b]
    3) compiler/jvmci/compilerToVM/ReprofileTest.java [c]
    4) compiler/jvmci/events/JvmciNotifyBootstrapFinishedEventTest.java [a]
    5) compiler/jvmci/events/JvmciNotifyInstallEventTest.java [a]
    6) compiler/jvmci/TestEnableJVMCIProduct.java [a]
    7) compiler/jvmci/TestJVMCIPrintProperties.java [a]

The bulk of the failed tests were derailed by assert [a] in
compileBroker.cpp:849 which crashed the test JVM. A few tests were
stopped by an assert in the test itself. However, ni som ecases that
test assert may well be the result of a crash in a spawned othervm JVM
caused by [a]. Note that test 6 asserted in the test when the othervm
run crashed because of assert [a].

[a] assert ((_c2_count > 0) || (_c1_count > 0))
[b] assert metaspaceMethodData != 0 where WB.getMethodData(method) after
compile
[c] assertNE(startProfile.toString(), compProfile.toString) ==>
"profiling info wasn't changed after 1500 invocations: expected
DefaultProfilingInfo<> to not equal DefaultProfilingInfo<>"

regards,


Andrew Dinn
-----------
Senior Principal Software Engineer
Red Hat UK Ltd
Registered in England and Wales under Company Registration No. 03798903
Directors: Michael Cunningham, Michael ("Mike") O'Neill



More information about the hotspot-compiler-dev mailing list