annotate test/compiler/tiered/TieredLevelsTest.java @ 14649:f6301b007a16

6498581: ThreadInterruptTest3 produces wrong output on Windows Summary: There is race condition between os::interrupt and os::is_interrupted on Windows. In JVM_Sleep(Thread.sleep), check if thread gets interrupted, it may see interrupted but not really interrupted so cause spurious waking up (early return from sleep). Fix by checking if interrupt event really gets set thus prevent false return. For intrinsic of _isInterrupted, on Windows, go fastpath only on bit not set. Reviewed-by: acorn, kvn Contributed-by: david.holmes@oracle.com, yumin.qi@oracle.com
author minqi
date Wed, 26 Feb 2014 15:20:41 -0800
parents f9a4b59ae350
children 2dfa56e10640 4ca6dc0799b6
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 /*
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
2 * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
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
14203
f9a4b59ae350 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 }
14203
f9a4b59ae350 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 {
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
54 checkNotCompiled();
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
55 compile();
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
56 checkCompiled();
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
57
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
58 int compLevel = getCompLevel();
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
59 if (compLevel > TIERED_STOP_AT_LEVEL) {
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
60 throw new RuntimeException("method.compLevel[" + compLevel
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
61 + "] > TieredStopAtLevel [" + TIERED_STOP_AT_LEVEL + "]");
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
62 }
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
63 int bci = WHITE_BOX.getMethodEntryBci(method);
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
64 deoptimize();
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 for (int testedTier = 1; testedTier <= TIERED_STOP_AT_LEVEL;
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
67 ++testedTier) {
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
68 testAvailableLevel(testedTier, bci);
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
69 }
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
70 for (int testedTier = TIERED_STOP_AT_LEVEL + 1;
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
71 testedTier <= COMP_LEVEL_MAX; ++testedTier) {
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
72 testUnavailableLevel(testedTier, bci);
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
73 }
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
74 }
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
75
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 @Override
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
78 protected void checkLevel(int expected, int actual) {
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
79 if (expected == COMP_LEVEL_FULL_PROFILE
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
80 && actual == COMP_LEVEL_LIMITED_PROFILE) {
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
81 // for simple method full_profile may be replaced by limited_profile
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
82 return;
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
83 }
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
84 super.checkLevel(expected, actual);
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
85 }
19c5a042b0b3 8026414: [TESTBUG] Tests for Tiered/NonTiered levels
iignatyev
parents:
diff changeset
86 }