Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/hotspot/jtreg/vmTestbase/nsk/jdi/ArrayReference/length/length001.java
41161 views
1
/*
2
* Copyright (c) 2001, 2018, 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
package nsk.jdi.ArrayReference.length;
26
27
import nsk.share.*;
28
import nsk.share.jpda.*;
29
import nsk.share.jdi.*;
30
31
import com.sun.jdi.*;
32
import java.io.*;
33
34
public class length001 {
35
final static String FIELD_NAME[][] = {
36
{"z1", "0"},
37
{"z2", "7"},
38
{"b1", "1"},
39
{"b2", "6"},
40
{"c1", "2"},
41
{"c2", "5"},
42
{"d1", "3"},
43
{"d2", "4"},
44
{"f1", "4"},
45
{"f2", "3"},
46
{"i1", "5"},
47
{"i2", "2"},
48
{"l1", "6"},
49
{"l2", "1"},
50
{"r1", "7"},
51
{"r2", "0"},
52
53
{"lF1", "3"},
54
{"lP1", "3"},
55
{"lU1", "2"},
56
{"lR1", "2"},
57
{"lT1", "1"},
58
{"lV1", "1"},
59
60
{"E1", "0"},
61
{"E2", "2"},
62
{"X1", "1"},
63
{"X2", "1"},
64
{"O1", "2"},
65
{"O2", "0"},
66
67
{"LF1", "3"},
68
{"LP1", "3"},
69
{"LU1", "2"},
70
{"LR1", "2"},
71
{"LT1", "1"},
72
{"LV1", "1"},
73
74
{"EF1", "0"},
75
{"EP1", "1"},
76
{"EU1", "1"},
77
{"ER1", "1"},
78
{"ET1", "1"},
79
{"EV1", "1"},
80
};
81
82
private static Log log;
83
private final static String prefix = "nsk.jdi.ArrayReference.length.";
84
private final static String className = "length001";
85
private final static String debugerName = prefix + className;
86
private final static String debugeeName = debugerName + "a";
87
private final static String classToCheckName = prefix + "ClassToCheck";
88
89
public static void main(String argv[]) {
90
System.exit(95 + run(argv, System.out));
91
}
92
93
public static int run(String argv[], PrintStream out) {
94
ArgumentHandler argHandler = new ArgumentHandler(argv);
95
log = new Log(out, argHandler);
96
Binder binder = new Binder(argHandler, log);
97
Debugee debugee = binder.bindToDebugee(debugeeName
98
+ (argHandler.verbose() ? " -verbose" : ""));
99
IOPipe pipe = debugee.createIOPipe();
100
boolean testFailed = false;
101
102
// Connect with debugee and resume it
103
debugee.redirectStderr(out);
104
debugee.resume();
105
String line = pipe.readln();
106
if (line == null) {
107
log.complain("debuger FAILURE> UNEXPECTED debugee's signal - null");
108
return 2;
109
}
110
if (!line.equals("ready")) {
111
log.complain("debuger FAILURE> UNEXPECTED debugee's signal - "
112
+ line);
113
return 2;
114
}
115
else {
116
log.display("debuger> debugee's \"ready\" signal recieved.");
117
}
118
119
ReferenceType refType = debugee.classByName(classToCheckName);
120
if (refType == null) {
121
log.complain("debuger FAILURE> Class " + classToCheckName
122
+ " not found.");
123
return 2;
124
}
125
log.display("debuger> Total fields in debugee read: "
126
+ refType.allFields().size() + " total fields in debuger: "
127
+ FIELD_NAME.length + "\n");
128
129
// Check all array fields from debugee
130
for (int i = 0; i < FIELD_NAME.length; i++) {
131
Field field;
132
String name = FIELD_NAME[i][0];
133
String realLength = FIELD_NAME[i][1];
134
Value value;
135
ArrayReference arrayRef;
136
int length;
137
String lengthStr;
138
139
// Get field from debuggee by name
140
try {
141
field = refType.fieldByName(name);
142
} catch (ClassNotPreparedException e) {
143
log.complain("debuger FAILURE 1> Can't get field by name "
144
+ name);
145
log.complain("debuger FAILURE 1> Exception: " + e);
146
testFailed = true;
147
continue;
148
} catch (ObjectCollectedException e) {
149
log.complain("debuger FAILURE 1> Can't get field by name "
150
+ name);
151
log.complain("debuger FAILURE 1> Exception: " + e);
152
testFailed = true;
153
continue;
154
}
155
log.display("debuger> " + i + " field " + field + " read.");
156
157
// Get field's value
158
try {
159
value = refType.getValue(field);
160
} catch (IllegalArgumentException e) {
161
log.complain("debuger FAILURE 2> Cannot get value for field "
162
+ name);
163
log.complain("debuger FAILURE 2> Exception: " + e);
164
testFailed = true;
165
continue;
166
} catch (ObjectCollectedException e) {
167
log.complain("debuger FAILURE 2> Cannot get value for field "
168
+ name);
169
log.complain("debuger FAILURE 2> Exception: " + e);
170
testFailed = true;
171
continue;
172
}
173
log.display("debuger> " + i + " field value is " + value);
174
175
// Cast to ArrayReference. All fields in debugee are
176
// arrays, so ClassCastException should not be thrown
177
try {
178
arrayRef = (ArrayReference)value;
179
} catch (ClassCastException e) {
180
log.complain("debuger FAILURE 3> Cannot cast value for field "
181
+ name + " to ArrayReference.");
182
log.complain("debuger FAILURE 3> Exception: " + e);
183
testFailed = true;
184
continue;
185
}
186
187
// Get length of ArrayReference object
188
try {
189
length = arrayRef.length();
190
} catch (ObjectCollectedException e) {
191
log.complain("debuger FAILURE 4> Cannot get length for array "
192
+ name);
193
log.complain("debuger FAILURE 4> Exception: " + e);
194
testFailed = true;
195
continue;
196
}
197
log.display("debuger> " + i + " field length is " + length);
198
lengthStr = realLength.valueOf(length);
199
200
// Check array's length
201
if (!realLength.equals(lengthStr)) {
202
log.complain("debuger FAILURE 5> Length of array " + name
203
+ " is " + length + ", but expected " + realLength);
204
testFailed = true;
205
}
206
log.display("debuger> " + i + " field checked.\n");
207
}
208
209
pipe.println("quit");
210
debugee.waitFor();
211
int status = debugee.getStatus();
212
if (testFailed) {
213
log.complain("debuger FAILURE> TEST FAILED");
214
return 2;
215
} else {
216
if (status == 95) {
217
log.display("debuger> expected Debugee's exit "
218
+ "status - " + status);
219
return 0;
220
} else {
221
log.complain("debuger FAILURE> UNEXPECTED Debugee's exit "
222
+ "status (not 95) - " + status);
223
return 2;
224
}
225
}
226
}
227
}
228
229