annotate test/compiler/6912517/Test.java @ 18408:2c3666f44855

Truffle: initial commit of object API implementation
author Andreas Woess <andreas.woess@jku.at>
date Tue, 18 Nov 2014 23:19:43 +0100
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 }