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