annotate test/compiler/6863420/Test.java @ 14094:3f27e57439ed

Truffle/Instrumentation: significant rearrangement (including moved class) and extension of the Truffle Instrumentation Framework. New interfaces include DebugContext (which can be attached to the ExecutionContext), through which access is provided to possibly language-specific (a) node instrumentation, (b) debug services manager, (c) notification when programs halt, (d) display of language values, and (e) display of variable identifiers.
author Michael Van De Vanter <michael.van.de.vanter@oracle.com>
date Mon, 03 Feb 2014 20:58:23 -0800
parents f67065f02409
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
894
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
1 /*
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
2 * Copyright 2009 D.E. Shaw. All Rights Reserved.
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
4 *
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
7 * published by the Free Software Foundation.
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
8 *
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
13 * accompanied this code).
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
14 *
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
18 *
1552
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 894
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 894
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: 894
diff changeset
21 * questions.
894
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
22 *
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
23 */
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
24
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
25 /**
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
26 * @test
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
27 * @bug 6863420
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
28 * @summary os::javaTimeNanos() go backward on Solaris x86
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
29 *
9079
f67065f02409 8010913: compiler/6863420 often exceeds timeout
bharadwaj
parents: 1552
diff changeset
30 * Notice the internal timeout in timeout thread Test.TOT.
f67065f02409 8010913: compiler/6863420 often exceeds timeout
bharadwaj
parents: 1552
diff changeset
31 * @run main/othervm/timeout=300 Test
894
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
32 */
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
33
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
34 public class Test {
9079
f67065f02409 8010913: compiler/6863420 often exceeds timeout
bharadwaj
parents: 1552
diff changeset
35
f67065f02409 8010913: compiler/6863420 often exceeds timeout
bharadwaj
parents: 1552
diff changeset
36 static final int INTERNAL_TIMEOUT=240;
f67065f02409 8010913: compiler/6863420 often exceeds timeout
bharadwaj
parents: 1552
diff changeset
37 static class TOT extends Thread {
f67065f02409 8010913: compiler/6863420 often exceeds timeout
bharadwaj
parents: 1552
diff changeset
38 public void run() {
f67065f02409 8010913: compiler/6863420 often exceeds timeout
bharadwaj
parents: 1552
diff changeset
39 try {
f67065f02409 8010913: compiler/6863420 often exceeds timeout
bharadwaj
parents: 1552
diff changeset
40 Thread.sleep(INTERNAL_TIMEOUT*1000);
f67065f02409 8010913: compiler/6863420 often exceeds timeout
bharadwaj
parents: 1552
diff changeset
41 } catch (InterruptedException ex) {
f67065f02409 8010913: compiler/6863420 often exceeds timeout
bharadwaj
parents: 1552
diff changeset
42 }
f67065f02409 8010913: compiler/6863420 often exceeds timeout
bharadwaj
parents: 1552
diff changeset
43 done = true;
f67065f02409 8010913: compiler/6863420 often exceeds timeout
bharadwaj
parents: 1552
diff changeset
44 }
f67065f02409 8010913: compiler/6863420 often exceeds timeout
bharadwaj
parents: 1552
diff changeset
45 }
f67065f02409 8010913: compiler/6863420 often exceeds timeout
bharadwaj
parents: 1552
diff changeset
46
894
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
47 static long value = 0;
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
48 static boolean got_backward_time = false;
9079
f67065f02409 8010913: compiler/6863420 often exceeds timeout
bharadwaj
parents: 1552
diff changeset
49 static volatile boolean done = false;
894
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
50
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
51 public static void main(String args[]) {
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
52 final int count = 100000;
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
53
9079
f67065f02409 8010913: compiler/6863420 often exceeds timeout
bharadwaj
parents: 1552
diff changeset
54 TOT tot = new TOT();
f67065f02409 8010913: compiler/6863420 often exceeds timeout
bharadwaj
parents: 1552
diff changeset
55 tot.setDaemon(true);
f67065f02409 8010913: compiler/6863420 often exceeds timeout
bharadwaj
parents: 1552
diff changeset
56 tot.start();
f67065f02409 8010913: compiler/6863420 often exceeds timeout
bharadwaj
parents: 1552
diff changeset
57
f67065f02409 8010913: compiler/6863420 often exceeds timeout
bharadwaj
parents: 1552
diff changeset
58 for (int numThreads = 1; !done && numThreads <= 32; numThreads++) {
894
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
59 final int numRuns = 1;
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
60 for (int t=1; t <= numRuns; t++) {
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
61 final int curRun = t;
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
62
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
63 System.out.println("Spawning " + numThreads + " threads");
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
64 final Thread threads[] = new Thread[numThreads];
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
65 for (int i = 0; i < threads.length; i++) {
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
66 Runnable thread =
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
67 new Runnable() {
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
68 public void run() {
9079
f67065f02409 8010913: compiler/6863420 often exceeds timeout
bharadwaj
parents: 1552
diff changeset
69 for (long l = 0; !done && l < 100000; l++) {
894
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
70 final long start = System.nanoTime();
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
71 if (value == 12345678) {
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
72 System.out.println("Wow!");
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
73 }
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
74 final long end = System.nanoTime();
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
75 final long time = end - start;
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
76 value += time;
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
77 if (time < 0) {
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
78 System.out.println(
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
79 "Backwards: " +
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
80 "start=" + start + " " +
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
81 "end=" + end + " " +
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
82 "time= " + time
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
83 );
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
84 got_backward_time = true;
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
85 }
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
86 }
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
87 }
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
88 };
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
89 threads[i] = new Thread(thread, "Thread" + i);
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
90 }
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
91 for (int i = 0; i < threads.length; i++) {
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
92 threads[i].start();
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
93 }
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
94 for (int i = 0; i < threads.length; i++) {
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
95 try {
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
96 threads[i].join();
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
97 }
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
98 catch (InterruptedException e) {
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
99 continue;
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
100 }
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
101 }
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
102 }
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
103 }
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
104
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
105 if (got_backward_time) {
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
106 System.exit(97);
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
107 }
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
108 }
665be97e8704 6863420: os::javaTimeNanos() go backward on Solaris x86
kvn
parents:
diff changeset
109 }