annotate test/compiler/7103261/Test7103261.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 eba044a722a4
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4052
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
1 /*
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
2 * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
4 *
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
7 * published by the Free Software Foundation.
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
8 *
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
13 * accompanied this code).
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
14 *
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
18 *
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
21 * questions.
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
22 *
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
23 */
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
24
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
25 /**
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
26 * @test
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
27 * @bug 7103261
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
28 * @summary crash with jittester on sparc
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
29 *
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
30 * @run main Test7103261
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
31 */
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
32
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
33 // exercise implicit null checking in the compiler for various field types
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
34 public class Test7103261 {
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
35 static Test7103261 null_value;
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
36 static Test7103261 nonnull_value = new Test7103261();
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
37 static Test7103261 nonnull_value2 = new Test7103261();
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
38
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
39 long l;
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
40 int i;
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
41 float f;
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
42 double d;
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
43 byte b;
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
44 char c;
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
45 short s;
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
46 boolean z;
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
47
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
48 public static void main(String[] args) {
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
49 constantStore();
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
50 valueTest(false);
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
51 valueTest(true);
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
52 }
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
53 static void constantStore() {
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
54 for (int field = 0; field < 8; field++) {
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
55 try {
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
56 Test7103261 o = nonnull_value;
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
57 for (int i = 0; i < 100000; i++) {
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
58 switch (field) {
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
59 case 0: o.l = 0; break;
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
60 case 1: o.i = 0; break;
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
61 case 2: o.f = 0; break;
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
62 case 3: o.d = 0; break;
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
63 case 4: o.b = 0; break;
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
64 case 5: o.c = 0; break;
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
65 case 6: o.s = 0; break;
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
66 case 7: o.z = false; break;
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
67 default: throw new InternalError();
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
68 }
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
69 if (i == 90000) {
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
70 // hide nullness from optimizer
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
71 o = null_value;
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
72 }
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
73 }
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
74 } catch (NullPointerException npe) {
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
75 }
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
76 }
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
77 }
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
78 static void valueTest(boolean store) {
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
79 for (int field = 0; field < 8; field++) {
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
80 try {
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
81 Test7103261 o = nonnull_value;
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
82 Test7103261 o2 = nonnull_value2;
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
83 for (int i = 0; i < 100000; i++) {
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
84 switch (field) {
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
85 case 0: o.l = o2.l; break;
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
86 case 1: o.i = o2.i; break;
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
87 case 2: o.f = o2.f; break;
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
88 case 3: o.d = o2.d; break;
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
89 case 4: o.b = o2.b; break;
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
90 case 5: o.c = o2.c; break;
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
91 case 6: o.s = o2.s; break;
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
92 case 7: o.z = o2.z; break;
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
93 default: throw new InternalError();
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
94 }
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
95 if (i == 90000) {
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
96 // hide nullness from optimizer
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
97 if (store)
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
98 o = null_value;
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
99 else
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
100 o2 = null_value;
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
101 }
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
102 }
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
103 } catch (NullPointerException npe) {
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
104 }
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
105 }
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
106 }
eba044a722a4 7103261: crash with jittester on sparc
never
parents:
diff changeset
107 }