1 /* 2 * Copyright (c) 2001, 2026, 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 package nsk.jdi.ModificationWatchpointEvent.valueToBe; 25 26 import nsk.share.*; 27 import nsk.share.jpda.*; 28 import nsk.share.jdi.*; 29 30 31 // This class is the debugged application in the test 32 33 class valuetobe001a { 34 35 static final int PASSED = 0; 36 static final int FAILED = 2; 37 static final int JCK_STATUS_BASE = 95; 38 39 static final String COMMAND_READY = "ready"; 40 static final String COMMAND_QUIT = "quit"; 41 static final String COMMAND_GO = "go"; 42 static final String COMMAND_DONE = "done"; 43 44 45 public static void main(String args[]) { 46 System.exit(JCK_STATUS_BASE + run(args)); 47 } 48 49 static int run( String args[]) { 50 ArgumentHandler argHandler = new ArgumentHandler(args); 51 IOPipe pipe = argHandler.createDebugeeIOPipe(); 52 53 // create instance of checked class 54 valuetobe001aCheckedClass foo = new valuetobe001aCheckedClass(); 55 // initialize fields values 56 foo.init(); 57 58 // notify debugger that debuggee started 59 pipe.println(COMMAND_READY); 60 61 // wait for command GO from debugger 62 String command = pipe.readln(); 63 if (command.equals(COMMAND_QUIT)) { 64 return PASSED; 65 } 66 if (!command.equals(COMMAND_GO)) { 67 System.err.println("TEST BUG: unknown command: " + command); 68 return FAILED; 69 } 70 71 // perform actions 72 foo.run(); 73 74 // notify debugger that the command done 75 pipe.println(COMMAND_DONE); 76 77 // wait for command QUIT from debugger and exit 78 command = pipe.readln(); 79 if (!command.equals(COMMAND_QUIT)) { 80 System.err.println("TEST BUG: unknown command: " + command); 81 return FAILED; 82 } 83 return PASSED; 84 } 85 } 86 87 // class for checking 88 class valuetobe001aCheckedClass { 89 90 boolean z0, z1[], z2[][]; 91 byte b0, b1[], b2[][]; 92 char c0, c1[], c2[][]; 93 double d0, d1[], d2[][]; 94 float f0, f1[], f2[][]; 95 int i0, i1[], i2[][]; 96 long l0, l1[], l2[][]; 97 short s0, s1[], s2[][]; 98 99 static long lS0, lS1[], lS2[][]; 100 private long lP0, lP1[], lP2[][]; 101 public long lU0, lU1[], lU2[][]; 102 protected long lR0, lR1[], lR2[][]; 103 transient long lT0, lT1[], lT2[][]; 104 volatile long lV0, lV1[], lV2[][]; 105 106 Boolean Z0, Z1[], Z2[][]; 107 Byte B0, B1[], B2[][]; 108 Character C0, C1[], C2[][]; 109 Double D0, D1[], D2[][]; 110 Float F0, F1[], F2[][]; 111 Integer I0, I1[], I2[][]; 112 Long L0, L1[], L2[][]; 113 String W0, W1[], W2[][]; 114 Short S0, S1[], S2[][]; 115 Object O0, O1[], O2[][]; 116 117 static Long LS0, LS1[], LS2[][]; 118 private Long LP0, LP1[], LP2[][]; 119 public Long LU0, LU1[], LU2[][]; 120 protected Long LR0, LR1[], LR2[][]; 121 transient Long LT0, LT1[], LT2[][]; 122 volatile Long LV0, LV1[], LV2[][]; 123 124 interface Inter {} 125 class Class implements Inter {} 126 Class X0, X1[], X2[][]; 127 Inter E0, E1[], E2[][]; 128 static Inter ES0, ES1[], ES2[][]; 129 private Inter EP0, EP1[], EP2[][]; 130 public Inter EU0, EU1[], EU2[][]; 131 protected Inter ER0, ER1[], ER2[][]; 132 transient Inter ET0, ET1[], ET2[][]; 133 volatile Inter EV0, EV1[], EV2[][]; 134 135 // initializa fields values 136 void init() { 137 z0 = false; 138 b0 = java.lang.Byte.MIN_VALUE; 139 c0 = java.lang.Character.MIN_VALUE; 140 d0 = java.lang.Double.MIN_VALUE; 141 f0 = java.lang.Float.MIN_VALUE; 142 i0 = java.lang.Integer.MIN_VALUE; 143 l0 = java.lang.Long.MIN_VALUE; 144 s0 = java.lang.Short.MIN_VALUE; 145 146 initFields(); 147 } 148 149 // change fields values 150 void run() { 151 z0 = true; 152 b0 = java.lang.Byte.MAX_VALUE; 153 c0 = java.lang.Character.MAX_VALUE; 154 d0 = java.lang.Double.MAX_VALUE; 155 f0 = java.lang.Float.MAX_VALUE; 156 i0 = java.lang.Integer.MAX_VALUE; 157 l0 = java.lang.Long.MAX_VALUE; 158 s0 = java.lang.Short.MAX_VALUE; 159 160 initFields(); 161 } 162 163 // calculate new fields values 164 void initFields() { 165 166 z1 = new boolean[] {z0}; 167 z2 = new boolean[][] {z1}; 168 b1 = new byte[] {b0}; 169 b2 = new byte[][] {b1}; 170 c1 = new char[] {c0}; 171 c2 = new char[][] {c1}; 172 d1 = new double[] {d0}; 173 d2 = new double[][] {d1}; 174 f1 = new float[] {f0}; 175 f2 = new float[][] {f1}; 176 i1 = new int[] {i0}; 177 i2 = new int[][] {i1}; 178 l1 = new long[] {l0}; 179 l2 = new long[][] {l1}; 180 s1 = new short[] {s0}; 181 s2 = new short[][] {s1}; 182 183 lS0 = l0; 184 lP0 = l0; 185 lU0 = l0; 186 lR0 = l0; 187 lT0 = l0; 188 lV0 = l0; 189 190 lS1 = new long[] {lS0}; 191 lS2 = new long[][] {lS1}; 192 lP1 = new long[] {lP0}; 193 lP2 = new long[][] {lP1}; 194 lU1 = new long[] {lU0}; 195 lU2 = new long[][] {lU1}; 196 lR1 = new long[] {lR0}; 197 lR2 = new long[][] {lR1}; 198 lT1 = new long[] {lT0}; 199 lT2 = new long[][] {lT1}; 200 lV1 = new long[] {lV0}; 201 lV2 = new long[][] {lV1}; 202 203 X0 = new Class(); 204 X1 = new Class[] {X0}; 205 X2 = new Class[][] {X1}; 206 Z0 = new Boolean(z0); 207 Z1 = new Boolean[] {Z0}; 208 Z2 = new Boolean[][] {Z1}; 209 B0 = new Byte(b0); 210 B1 = new Byte[] {B0}; 211 B2 = new Byte[][] {B1}; 212 C0 = new Character(c0); 213 C1 = new Character[] {C0}; 214 C2 = new Character[][]{C1}; 215 D0 = Double.valueOf(d0); 216 D1 = new Double[] {D0}; 217 D2 = new Double[][] {D1}; 218 F0 = Float.valueOf(f0); 219 F1 = new Float[] {F0}; 220 F2 = new Float[][] {F1}; 221 I0 = Integer.valueOf(i0); 222 I1 = new Integer[] {I0}; 223 I2 = new Integer[][] {I1}; 224 L0 = Long.valueOf(l0); 225 L1 = new Long[] {L0}; 226 L2 = new Long[][] {L1}; 227 S0 = Short.valueOf(s0); 228 S1 = new Short[] {S0}; 229 S2 = new Short[][] {S1}; 230 W0 = new String(); 231 W1 = new String[] {W0}; 232 W2 = new String[][] {W1}; 233 O0 = new Object(); 234 O1 = new Object[] {O0}; 235 O2 = new Object[][] {O1}; 236 237 LS0 = Long.valueOf(l0); 238 LS1 = new Long[] {LS0}; 239 LS2 = new Long[][] {LS1}; 240 LP0 = Long.valueOf(l0); 241 LP1 = new Long[] {LP0}; 242 LP2 = new Long[][] {LP1}; 243 LU0 = Long.valueOf(l0); 244 LU1 = new Long[] {LU0}; 245 LU2 = new Long[][] {LU1}; 246 LR0 = Long.valueOf(l0); 247 LR1 = new Long[] {LR0}; 248 LR2 = new Long[][] {LR1}; 249 LT0 = Long.valueOf(l0); 250 LT1 = new Long[] {LT0}; 251 LT2 = new Long[][] {LT1}; 252 LV0 = Long.valueOf(l0); 253 LV1 = new Long[] {LV0}; 254 LV2 = new Long[][] {LV1}; 255 256 E0 = new Class(); 257 E1 = new Inter[] {E0}; 258 E2 = new Inter[][] {E1}; 259 ES0 = new Class(); 260 ES1 = new Inter[] {ES0}; 261 ES2 = new Inter[][] {ES1}; 262 EP0 = new Class(); 263 EP1 = new Inter[] {EP0}; 264 EP2 = new Inter[][] {EP1}; 265 EU0 = new Class(); 266 EU1 = new Inter[] {EU0}; 267 EU2 = new Inter[][] {EU1}; 268 ER0 = new Class(); 269 ER1 = new Inter[] {ER0}; 270 ER2 = new Inter[][] {ER1}; 271 ET0 = new Class(); 272 ET1 = new Inter[] {ET0}; 273 ET2 = new Inter[][] {ET1}; 274 EV0 = new Class(); 275 EV1 = new Inter[] {EV0}; 276 EV2 = new Inter[][] {EV1}; 277 } 278 279 } --- EOF ---