[11] RFR(S) 8205400: [Graal] compiler/jvmci/compilerToVM/DisassembleCodeBlobTest.java fails with can't be enqueued for compilation on level 4
Vladimir Kozlov
vladimir.kozlov at oracle.com
Fri Jun 22 22:04:27 UTC 2018
http://cr.openjdk.java.net/~kvn/8205400/webrev.00/
https://bugs.openjdk.java.net/browse/JDK-8205400
I was not able to reproduce the problem. I did 170 runs of the test with
Graal in mach5. I can only speculate what happen.
By default JVMCI and Graal are initialized only on first tier4
compilation request. Usually there are hot methods which trigger such
compilation and initialization before the test requests compilation.
It is still possible that test's compilation request is the first.
The test asks blocking (BackgroundCompilation = false) compilation to
wait when it complete [1].
But JVMCI code will unblock first compilation when JVMCI and Graal are
not initialized yet [2].
As result execution continue before Graal's compilation finished (or
even started) and WB::compile_method() will return NULL value.
To trigger eager JVMCI and Graal initialization flag -XX:+EagerJVMCI or
-Xbatch (-XX:-BackgroundCompilation) should be used to run test. And 2
of jvmci/compilerToVM/ tests which use the same WB compilation API are
using -XX:-BackgroundCompilation. I am suggesting to do the same in 2
other tests.
To find if this is really what happen I added error prints in
WhiteBox::compile_method() which have several cases when it can return
false.
Tested with tier1,tier2,tier3-graal,precheckin-comp
[1]
http://hg.openjdk.java.net/jdk/jdk/file/d91a64467683/test/hotspot/jtreg/compiler/jvmci/compilerToVM/CompileCodeTestCase.java#l108
[2]
http://hg.openjdk.java.net/jdk/jdk/file/d91a64467683/src/hotspot/share/compiler/compileBroker.cpp#l1082
--
Thanks,
Vladimir
More information about the hotspot-compiler-dev
mailing list