annotate test/compiler/tiered/TieredLevelsTest.java @ 20304:a22acf6d7598

8048112: G1 Full GC needs to support the case when the very first region is not available Summary: Refactor preparation for compaction during Full GC so that it lazily initializes the first compaction point. This also avoids problems later when the first region may not be committed. Also reviewed by K. Barrett. Reviewed-by: brutisso
author tschatzl
date Mon, 21 Jul 2014 10:00:31 +0200
parents d559dbbded7a
children 92aa6797d639 52b4284cb496
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12957
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
1 /*
17711
d559dbbded7a 8027124: [TESTBUG] NonTieredLevelsTest: java.lang.RuntimeException: private TestCase$Helper(java.lang.Object) must be osr_compiled
iignatyev
parents: 17616
diff changeset
2 * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
12957
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
4 *
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
7 * published by the Free Software Foundation.
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
8 *
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
13 * accompanied this code).
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
14 *
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
18 *
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
21 * questions.
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
22 */
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
23
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
24 /**
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
25 * @test TieredLevelsTest
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
26 * @library /testlibrary /testlibrary/whitebox /compiler/whitebox
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
27 * @build TieredLevelsTest
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
28 * @run main ClassFileInstaller sun.hotspot.WhiteBox
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
29 * @run main/othervm -Xbootclasspath/a:. -XX:+TieredCompilation
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
30 * -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI
17616
d1760952ebdd 8028587: New tests development for intrisics for basic operators - add, neg, inc, dec, sub, mul
iignatyev
parents: 12957
diff changeset
31 * -XX:CompileCommand=compileonly,SimpleTestCase$Helper::*
12957
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
32 * TieredLevelsTest
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
33 * @summary Verify that all levels < 'TieredStopAtLevel' can be used
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
34 * @author igor.ignatyev@oracle.com
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
35 */
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
36 public class TieredLevelsTest extends CompLevelsTest {
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
37 public static void main(String[] args) throws Exception {
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
38 if (!TIERED_COMPILATION) {
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
39 System.err.println("Test isn't applicable w/ disabled "
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
40 + "TieredCompilation. Skip test.");
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
41 return;
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
42 }
17616
d1760952ebdd 8028587: New tests development for intrisics for basic operators - add, neg, inc, dec, sub, mul
iignatyev
parents: 12957
diff changeset
43 CompilerWhiteBoxTest.main(TieredLevelsTest::new, args);
12957
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
44 }
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
45
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
46 private TieredLevelsTest(TestCase testCase) {
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
47 super(testCase);
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
48 // to prevent inlining of #method
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
49 WHITE_BOX.testSetDontInlineMethod(method, true);
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
50 }
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
51
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
52 @Override
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
53 protected void test() throws Exception {
17711
d559dbbded7a 8027124: [TESTBUG] NonTieredLevelsTest: java.lang.RuntimeException: private TestCase$Helper(java.lang.Object) must be osr_compiled
iignatyev
parents: 17616
diff changeset
54 if (skipXcompOSR()) {
d559dbbded7a 8027124: [TESTBUG] NonTieredLevelsTest: java.lang.RuntimeException: private TestCase$Helper(java.lang.Object) must be osr_compiled
iignatyev
parents: 17616
diff changeset
55 return;
d559dbbded7a 8027124: [TESTBUG] NonTieredLevelsTest: java.lang.RuntimeException: private TestCase$Helper(java.lang.Object) must be osr_compiled
iignatyev
parents: 17616
diff changeset
56 }
12957
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
57 checkNotCompiled();
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
58 compile();
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
59 checkCompiled();
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
60
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
61 int compLevel = getCompLevel();
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
62 if (compLevel > TIERED_STOP_AT_LEVEL) {
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
63 throw new RuntimeException("method.compLevel[" + compLevel
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
64 + "] > TieredStopAtLevel [" + TIERED_STOP_AT_LEVEL + "]");
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
65 }
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
66 int bci = WHITE_BOX.getMethodEntryBci(method);
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
67 deoptimize();
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
68
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
69 for (int testedTier = 1; testedTier <= TIERED_STOP_AT_LEVEL;
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
70 ++testedTier) {
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
71 testAvailableLevel(testedTier, bci);
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
72 }
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
73 for (int testedTier = TIERED_STOP_AT_LEVEL + 1;
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
74 testedTier <= COMP_LEVEL_MAX; ++testedTier) {
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
75 testUnavailableLevel(testedTier, bci);
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
76 }
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
77 }
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
78
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
79
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
80 @Override
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
81 protected void checkLevel(int expected, int actual) {
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
82 if (expected == COMP_LEVEL_FULL_PROFILE
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
83 && actual == COMP_LEVEL_LIMITED_PROFILE) {
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
84 // for simple method full_profile may be replaced by limited_profile
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
85 return;
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
86 }
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
87 super.checkLevel(expected, actual);
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
88 }
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
89 }