[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