[aarch64-port-dev ] RFR: JDK8 merge up to jdk8u40-b09
Edward Nevill
ed at camswl.com
Mon Oct 13 12:29:18 UTC 2014
On Mon, 2014-10-13 at 12:16 +0100, Edward Nevill wrote:
> The additional 4 server/hotspot failures on aarch64 are
>
> FAILED: compiler/whitebox/ClearMethodStateTest.java
> FAILED: compiler/whitebox/DeoptimizeAllTest.java
> FAILED: compiler/whitebox/DeoptimizeMethodTest.java
> FAILED: compiler/whitebox/GetNMethodTest.java
>
> These all fail with the exception
>
> java.lang.RuntimeException: private SimpleTestCase$Helper(java.lang.Object) must be osr_compiled
>
> These fail because the test expects the method to be osr compiled but it is not. I suspect this is due to deoptimisation on aarch64. As all these additional failures are only in the whitebox api I would like to continue with the merge and look at them later.
>
On further examination these fail because we have in CompilerWhiteBoxTest.java we have
static {
if (TIERED_COMPILATION) {
BACKEDGE_THRESHOLD = THRESHOLD = 150000;
} else {
THRESHOLD = COMPILE_THRESHOLD;
BACKEDGE_THRESHOLD = COMPILE_THRESHOLD * Long.parseLong(getVMOption(
"OnStackReplacePercentage"));
}
}
IE. A 'magic' figure of 150000 for the backedge threshold. If I run one of the tests with this I get
--- CUT HERE ---
1840 66 3 SimpleTestCase$Helper::staticMethod (4 bytes)
1840 67 1 SimpleTestCase$Helper::staticMethod (4 bytes)
1840 66 3 SimpleTestCase$Helper::staticMethod (4 bytes) made not entrant
1845 68 % 3 SimpleTestCase$Helper::osrStaticMethod @ 4 (27 bytes)
1846 69 3 SimpleTestCase$Helper::osrStaticMethod (27 bytes)
1847 70 % 4 SimpleTestCase$Helper::osrStaticMethod @ 4 (27 bytes)
1848 68 % 3 SimpleTestCase$Helper::osrStaticMethod @ -2 (27 bytes) made not entrant
1849 70 % 4 SimpleTestCase$Helper::osrStaticMethod @ -2 (27 bytes) made not entrant
on exception 'private static int SimpleTestCase$Helper.osrStaticMethod() must be osr_compiled':
private static int SimpleTestCase$Helper.osrStaticMethod():
compilable: true
compiled: true
comp_level: 3
osr_compilable: true
osr_compiled: false
osr_comp_level: 0
in_queue: false
compile_queues_size: 0
java.lang.RuntimeException: private static int SimpleTestCase$Helper.osrStaticMethod() must be osr_compiled
at CompilerWhiteBoxTest.checkCompiled(CompilerWhiteBoxTest.java:264)
--- CUT HERE ---
IE. The method SimpleTestCase$Helper::osrStaticMethod is deoptimised before the test is performed.
If I change the magic number to 110000 I get
--- CUT HERE ---
1714 66 3 SimpleTestCase$Helper::staticMethod (4 bytes)
1714 67 1 SimpleTestCase$Helper::staticMethod (4 bytes)
1715 66 3 SimpleTestCase$Helper::staticMethod (4 bytes) made not entrant
1720 68 % 3 SimpleTestCase$Helper::osrStaticMethod @ 4 (27 bytes)
1721 69 3 SimpleTestCase$Helper::osrStaticMethod (27 bytes)
2722 68 % 3 SimpleTestCase$Helper::osrStaticMethod @ -2 (27 bytes) made not entrant
2722 69 3 SimpleTestCase$Helper::osrStaticMethod (27 bytes) made not entrant
at test's end:
private static int SimpleTestCase$Helper.osrStaticMethod():
compilable: true
compiled: false
comp_level: 0
osr_compilable: true
osr_compiled: false
osr_comp_level: 0
in_queue: false
compile_queues_size: 0
STATUS:Passed.
--- CUT HERE ---
IE. the test passes.
So I think these tests should simply be excluded because it is fundamentally broken embedding a backedge threshold in a test like this.
All the best,
Ed.
More information about the aarch64-port-dev
mailing list