Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openjdk-multiarch-jdk8u
Path: blob/aarch64-shenandoah-jdk8u272-b10/hotspot/test/compiler/5091921/Test6357214.java
32285 views
1
/*
2
* Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
*
5
* This code is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 only, as
7
* published by the Free Software Foundation.
8
*
9
* This code is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12
* version 2 for more details (a copy is included in the LICENSE file that
13
* accompanied this code).
14
*
15
* You should have received a copy of the GNU General Public License version
16
* 2 along with this work; if not, write to the Free Software Foundation,
17
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18
*
19
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20
* or visit www.oracle.com if you need additional information or have any
21
* questions.
22
*
23
*/
24
25
/**
26
* @test
27
* @bug 6357214
28
* @summary Hotspot server compiler gets integer comparison wrong
29
*
30
* @run main/othervm/timeout=60 -DshowAll=ffo -DeventID=444 Test6357214
31
*/
32
33
// The test hangs after few iterations before the fix. So it fails if timeout.
34
class MyResult {
35
public boolean next() {
36
return true;
37
}
38
39
public String getString(String in) {
40
if (in.equals("id"))
41
return "idFoo";
42
if (in.equals("contentKey"))
43
return "ckFoo";
44
return "Foo";
45
}
46
47
public int getInt(String in) {
48
if (in.equals("processingComplete"))
49
return 0;
50
return 1;
51
}
52
53
public byte[] getBytes(String in) {
54
byte[] arr = null;
55
if (in.equals("content")) {
56
arr = new byte[65536];
57
byte j = 32;
58
for (int i=0; i<65536; i++) {
59
arr[i] = j;
60
if (++j == 127)
61
j=32;
62
}
63
}
64
return arr;
65
}
66
}
67
68
public class Test6357214 {
69
public static volatile boolean bollocks = true;
70
public String create(String context) throws Exception {
71
72
//
73
// Extract HTTP parameters
74
//
75
76
boolean showAll = System.getProperty("showAll") != null;
77
String eventID = System.getProperty("eventID");
78
String eventContentKey = System.getProperty("cKey");
79
//
80
// Build ContentStaging query based on eventID or eventContentKey
81
//
82
83
String sql = "select id, processingComplete, contentKey, content "
84
+ "from ContentStaging cs, ContentStagingKey csk "
85
+ "where cs.eventContentKey = csk.eventContentKey ";
86
87
if (eventID != null) {
88
sql += "and id = " + eventID;
89
}
90
else if (eventContentKey != null) {
91
sql += "and cs.eventContentKey = '"
92
+ eventContentKey
93
+ "' having id = max(id)";
94
}
95
else {
96
throw new Exception("Need eventID or eventContentKey");
97
}
98
99
//
100
// This factory builds a static panel, there is no JSP
101
//
102
103
StringBuffer html = new StringBuffer();
104
105
try {
106
107
MyResult result = new MyResult();
108
if (result.next()) {
109
110
eventID = result.getString("id");
111
int processingComplete = result.getInt("processingComplete");
112
String contentKey = result.getString("contentKey");
113
byte[] bytes = result.getBytes("content");
114
115
//
116
// Print content status and associated controls
117
//
118
119
html.append("<br/><font class=\"small\">");
120
html.append("Status: ");
121
switch (processingComplete) {
122
case 0 :
123
case 1 : html.append("PENDING"); break;
124
case 2 : html.append(contentKey); break;
125
case 3 : html.append(eventID); break;
126
default : html.append("UNKNONW");
127
}
128
html.append("</font><br/>");
129
130
//
131
// Print at most 20Kb of content unless "showAll" is set
132
//
133
134
int limit = showAll ? Integer.MAX_VALUE : 1024 * 20;
135
System.out.println(limit);
136
html.append("<pre>");
137
for (int i = 0; bytes != null && i < bytes.length; i++) {
138
char c = (char) bytes[i];
139
switch (c) {
140
case '<' : html.append("&lt;"); break;
141
case '>' : html.append("&gt;"); break;
142
case '&' : html.append("&amp;"); break;
143
default : html.append(c);
144
}
145
146
if (i > limit) {
147
while (bollocks);
148
// System.out.println("i is " + i);
149
// System.out.println("limit is " + limit);
150
html.append("...\n</pre>");
151
html.append(eventID);
152
html.append("<pre>");
153
break;
154
}
155
}
156
html.append("</pre>");
157
}
158
}
159
catch (Exception exception) {
160
throw exception;
161
}
162
finally {
163
html.append("Oof!!");
164
}
165
String ret = html.toString();
166
System.out.println("Returning string length = "+ ret.length());
167
return ret;
168
}
169
170
public static void main(String[] args) throws Exception {
171
int length=0;
172
173
for (int i = 0; i < 100; i++) {
174
length = new Test6357214().create("boo").length();
175
System.out.println(length);
176
}
177
}
178
}
179
180
181