annotate test/compiler/6912517/Test.java @ 3011:f00918f35c7f

inlining and runtime interface related changes: added codeSize() and compilerStorage() to RiMethod HotSpotMethodResolved uses reflective methods instead of vmIds and survives compilations HotSpotResolvedType.isInitialized not represented as field (can change) inlining stores graphs into method objects and reuses them
author Lukas Stadler <lukas.stadler@jku.at>
date Thu, 16 Jun 2011 20:36:17 +0200
parents c18cbe5936b8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1151
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
1 /*
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
2 * Copyright 2009 D.E. Shaw. All Rights Reserved.
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
4 *
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
7 * published by the Free Software Foundation.
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
8 *
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
13 * accompanied this code).
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
14 *
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
18 *
1552
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 1151
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 1151
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 1151
diff changeset
21 * questions.
1151
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
22 */
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
23
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
24 /**
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
25 * @test
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
26 * @bug 6912517
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
27 * @summary JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
28 *
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
29 * @run main/othervm -Xbatch -XX:CompileThreshold=100 -XX:+IgnoreUnrecognizedVMOptions -XX:-UseCompressedOops Test
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
30 */
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
31
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
32 /**
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
33 * Highlights a bug with the JIT compiler.
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
34 * @author Matt Bruce m b r u c e __\at/__ g m a i l DOT c o m
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
35 */
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
36 public class Test implements Runnable
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
37 {
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
38 private final Thread myThread;
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
39 private Thread myInitialThread;
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
40 private boolean myShouldCheckThreads;
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
41
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
42 /**
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
43 * Sets up the running thread, and starts it.
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
44 */
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
45 public Test(int id)
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
46 {
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
47 myThread = new Thread(this);
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
48 myThread.setName("Runner: " + id);
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
49 myThread.start();
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
50 myShouldCheckThreads = false;
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
51 }
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
52
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
53 /**
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
54 * @param shouldCheckThreads the shouldCheckThreads to set
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
55 */
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
56 public void setShouldCheckThreads(boolean shouldCheckThreads)
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
57 {
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
58 myShouldCheckThreads = shouldCheckThreads;
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
59 }
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
60
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
61 /**
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
62 * Starts up the two threads with enough delay between them for JIT to
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
63 * kick in.
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
64 * @param args
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
65 * @throws InterruptedException
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
66 */
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
67 public static void main(String[] args) throws InterruptedException
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
68 {
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
69 // let this run for a bit, so the "run" below is JITTed.
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
70 for (int id = 0; id < 20; id++) {
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
71 System.out.println("Starting thread: " + id);
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
72 Test bug = new Test(id);
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
73 bug.setShouldCheckThreads(true);
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
74 Thread.sleep(2500);
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
75 }
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
76 }
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
77
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
78 /**
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
79 * @see java.lang.Runnable#run()
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
80 */
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
81 public void run()
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
82 {
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
83 long runNumber = 0;
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
84 while (true) {
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
85 // run hot for a little while, give JIT time to kick in to this loop.
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
86 // then run less hot.
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
87 if (runNumber > 15000) {
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
88 try {
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
89 Thread.sleep(5);
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
90 }
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
91 catch (InterruptedException e) {
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
92 e.printStackTrace();
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
93 }
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
94 }
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
95 runNumber++;
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
96 ensureProperCallingThread();
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
97 }
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
98 }
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
99
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
100 private void ensureProperCallingThread()
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
101 {
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
102 // this should never be null. but with the JIT bug, it will be.
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
103 // JIT BUG IS HERE ==>>>>>
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
104 if (myShouldCheckThreads) {
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
105 if (myInitialThread == null) {
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
106 myInitialThread = Thread.currentThread();
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
107 }
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
108 else if (myInitialThread != Thread.currentThread()) {
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
109 System.out.println("Not working: " + myInitialThread.getName());
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
110 }
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
111 }
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
112 }
1271af4ec18c 6912517: JIT bug compiles out (and stops running) code that needs to be run. Causes NPE.
kvn
parents:
diff changeset
113 }