| /* |
| * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved. |
| * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
| * |
| * This code is free software; you can redistribute it and/or modify it |
| * under the terms of the GNU General Public License version 2 only, as |
| * published by the Free Software Foundation. |
| * |
| * This code is distributed in the hope that it will be useful, but WITHOUT |
| * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
| * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
| * version 2 for more details (a copy is included in the LICENSE file that |
| * accompanied this code). |
| * |
| * You should have received a copy of the GNU General Public License version |
| * 2 along with this work; if not, write to the Free Software Foundation, |
| * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
| * |
| * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
| * or visit www.oracle.com if you need additional information or have any |
| * questions. |
| */ |
| |
| package nsk.jdi.ModificationWatchpointEvent.valueToBe; |
| |
| import nsk.share.*; |
| import nsk.share.jpda.*; |
| import nsk.share.jdi.*; |
| |
| |
| // This class is the debugged application in the test |
| |
| class valuetobe002a { |
| |
| static final int PASSED = 0; |
| static final int FAILED = 2; |
| static final int JCK_STATUS_BASE = 95; |
| |
| static final String COMMAND_READY = "ready"; |
| static final String COMMAND_QUIT = "quit"; |
| static final String COMMAND_GO = "go"; |
| static final String COMMAND_DONE = "done"; |
| |
| public static void main(String args[]) { |
| System.exit(JCK_STATUS_BASE + run(args)); |
| } |
| |
| static int run( String args[]) { |
| ArgumentHandler argHandler = new ArgumentHandler(args); |
| IOPipe pipe = argHandler.createDebugeeIOPipe(); |
| |
| // create instance of checked class |
| valuetobe002aCheckedClass foo = new valuetobe002aCheckedClass(); |
| // initialize fields values |
| foo.init(); |
| |
| // notify debugger that debuggee started |
| pipe.println(COMMAND_READY); |
| |
| // wait for command GO from debugger |
| String command = pipe.readln(); |
| if (command.equals(COMMAND_QUIT)) { |
| return PASSED; |
| } |
| if (!command.equals(COMMAND_GO)) { |
| System.err.println("TEST BUG: unknown command: " + command); |
| return FAILED; |
| } |
| |
| // perform actions |
| foo.run(); |
| |
| // notify debugger that the command done |
| pipe.println(COMMAND_DONE); |
| |
| // wait for command QUIT from debugger and exit |
| command = pipe.readln(); |
| if (!command.equals(COMMAND_QUIT)) { |
| System.err.println("TEST BUG: unknown command: " + command); |
| return FAILED; |
| } |
| return PASSED; |
| } |
| } |
| |
| // class for checking |
| class valuetobe002aCheckedClass { |
| |
| boolean z0, z1[], z2[][]; |
| byte b0, b1[], b2[][]; |
| char c0, c1[], c2[][]; |
| double d0, d1[], d2[][]; |
| float f0, f1[], f2[][]; |
| int i0, i1[], i2[][]; |
| long l0, l1[], l2[][]; |
| short s0, s1[], s2[][]; |
| |
| static long lS0, lS1[], lS2[][]; |
| private long lP0, lP1[], lP2[][]; |
| public long lU0, lU1[], lU2[][]; |
| protected long lR0, lR1[], lR2[][]; |
| transient long lT0, lT1[], lT2[][]; |
| volatile long lV0, lV1[], lV2[][]; |
| |
| Boolean Z0, Z1[], Z2[][]; |
| Byte B0, B1[], B2[][]; |
| Character C0, C1[], C2[][]; |
| Double D0, D1[], D2[][]; |
| Float F0, F1[], F2[][]; |
| Integer I0, I1[], I2[][]; |
| Long L0, L1[], L2[][]; |
| String W0, W1[], W2[][]; |
| Short S0, S1[], S2[][]; |
| Object O0, O1[], O2[][]; |
| |
| static Long LS0, LS1[], LS2[][]; |
| private Long LP0, LP1[], LP2[][]; |
| public Long LU0, LU1[], LU2[][]; |
| protected Long LR0, LR1[], LR2[][]; |
| transient Long LT0, LT1[], LT2[][]; |
| volatile Long LV0, LV1[], LV2[][]; |
| |
| interface Inter {} |
| class Class implements Inter {} |
| Class X0, X1[], X2[][]; |
| Inter E0, E1[], E2[][]; |
| static Inter ES0, ES1[], ES2[][]; |
| private Inter EP0, EP1[], EP2[][]; |
| public Inter EU0, EU1[], EU2[][]; |
| protected Inter ER0, ER1[], ER2[][]; |
| transient Inter ET0, ET1[], ET2[][]; |
| volatile Inter EV0, EV1[], EV2[][]; |
| |
| // initialize fields values |
| void init() { |
| initFields(false); |
| } |
| |
| // change fields values |
| void run() { |
| initFields(true); |
| } |
| |
| // calculate new fields values |
| void initFields(boolean flag) { |
| z0 = true; |
| b0 = java.lang.Byte.MAX_VALUE; |
| c0 = java.lang.Character.MAX_VALUE; |
| d0 = java.lang.Double.MAX_VALUE; |
| f0 = java.lang.Float.MAX_VALUE; |
| i0 = java.lang.Integer.MAX_VALUE; |
| l0 = java.lang.Long.MAX_VALUE; |
| s0 = java.lang.Short.MAX_VALUE; |
| |
| z1 = flag ? z1 : new boolean[] {z0}; |
| z2 = flag ? z2 : new boolean[][] {z1}; |
| b1 = flag ? b1 : new byte[] {b0}; |
| b2 = flag ? b2 : new byte[][] {b1}; |
| c1 = flag ? c1 : new char[] {c0}; |
| c2 = flag ? c2 : new char[][] {c1}; |
| d1 = flag ? d1 : new double[] {d0}; |
| d2 = flag ? d2 : new double[][] {d1}; |
| f1 = flag ? f1 : new float[] {f0}; |
| f2 = flag ? f2 : new float[][] {f1}; |
| i1 = flag ? i1 : new int[] {i0}; |
| i2 = flag ? i2 : new int[][] {i1}; |
| l1 = flag ? l1 : new long[] {l0}; |
| l2 = flag ? l2 : new long[][] {l1}; |
| s1 = flag ? s1 : new short[] {s0}; |
| s2 = flag ? s2 : new short[][] {s1}; |
| |
| lS0 = l0; |
| lP0 = l0; |
| lU0 = l0; |
| lR0 = l0; |
| lT0 = l0; |
| lV0 = l0; |
| |
| lS1 = flag ? lS1 : new long[] {lS0}; |
| lS2 = flag ? lS2 : new long[][] {lS1}; |
| lP1 = flag ? lP1 : new long[] {lP0}; |
| lP2 = flag ? lP2 : new long[][] {lP1}; |
| lU1 = flag ? lU1 : new long[] {lU0}; |
| lU2 = flag ? lU2 : new long[][] {lU1}; |
| lR1 = flag ? lR1 : new long[] {lR0}; |
| lR2 = flag ? lR2 : new long[][] {lR1}; |
| lT1 = flag ? lT1 : new long[] {lT0}; |
| lT2 = flag ? lT2 : new long[][] {lT1}; |
| lV1 = flag ? lV1 : new long[] {lV0}; |
| lV2 = flag ? lV2 : new long[][] {lV1}; |
| |
| X0 = flag ? X0 : new Class(); |
| X1 = flag ? X1 : new Class[] {X0}; |
| X2 = flag ? X2 : new Class[][] {X1}; |
| Z0 = flag ? Z0 : new Boolean(true); |
| Z1 = flag ? Z1 : new Boolean[] {Z0}; |
| Z2 = flag ? Z2 : new Boolean[][] {Z1}; |
| B0 = flag ? B0 : new Byte(java.lang.Byte.MIN_VALUE); |
| B1 = flag ? B1 : new Byte[] {B0}; |
| B2 = flag ? B2 : new Byte[][] {B1}; |
| C0 = flag ? C0 : new Character(java.lang.Character.MIN_VALUE); |
| C1 = flag ? C1 : new Character[] {C0}; |
| C2 = flag ? C2 : new Character[][]{C1}; |
| D0 = flag ? D0 : new Double(java.lang.Double.MIN_VALUE); |
| D1 = flag ? D1 : new Double[] {D0}; |
| D2 = flag ? D2 : new Double[][] {D1}; |
| F0 = flag ? F0 : new Float(java.lang.Float.MIN_VALUE); |
| F1 = flag ? F1 : new Float[] {F0}; |
| F2 = flag ? F2 : new Float[][] {F1}; |
| I0 = flag ? I0 : new Integer(java.lang.Integer.MIN_VALUE); |
| I1 = flag ? I1 : new Integer[] {I0}; |
| I2 = flag ? I2 : new Integer[][] {I1}; |
| L0 = flag ? L0 : new Long(java.lang.Long.MIN_VALUE); |
| L1 = flag ? L1 : new Long[] {L0}; |
| L2 = flag ? L2 : new Long[][] {L1}; |
| S0 = flag ? S0 : new Short(java.lang.Short.MIN_VALUE); |
| S1 = flag ? S1 : new Short[] {S0}; |
| S2 = flag ? S2 : new Short[][] {S1}; |
| W0 = flag ? W0 : new String(); |
| W1 = flag ? W1 : new String[] {W0}; |
| W2 = flag ? W2 : new String[][] {W1}; |
| O0 = flag ? O0 : new Object(); |
| O1 = flag ? O1 : new Object[] {O0}; |
| O2 = flag ? O2 : new Object[][] {O1}; |
| |
| LS0 = flag ? LS0 : new Long(java.lang.Long.MAX_VALUE); |
| LS1 = flag ? LS1 : new Long[] {LS0}; |
| LS2 = flag ? LS2 : new Long[][] {LS1}; |
| LP0 = flag ? LP0 : new Long(java.lang.Long.MAX_VALUE); |
| LP1 = flag ? LP1 : new Long[] {LP0}; |
| LP2 = flag ? LP2 : new Long[][] {LP1}; |
| LU0 = flag ? LU0 : new Long(java.lang.Long.MAX_VALUE); |
| LU1 = flag ? LU1 : new Long[] {LU0}; |
| LU2 = flag ? LU2 : new Long[][] {LU1}; |
| LR0 = flag ? LR0 : new Long(java.lang.Long.MAX_VALUE); |
| LR1 = flag ? LR1 : new Long[] {LR0}; |
| LR2 = flag ? LR2 : new Long[][] {LR1}; |
| LT0 = flag ? LT0 : new Long(java.lang.Long.MAX_VALUE); |
| LT1 = flag ? LT1 : new Long[] {LT0}; |
| LT2 = flag ? LT2 : new Long[][] {LT1}; |
| LV0 = flag ? LV0 : new Long(java.lang.Long.MAX_VALUE); |
| LV1 = flag ? LV1 : new Long[] {LV0}; |
| LV2 = flag ? LV2 : new Long[][] {LV1}; |
| |
| E0 = flag ? E0 : new Class(); |
| E1 = flag ? E1 : new Inter[] {E0}; |
| E2 = flag ? E2 : new Inter[][] {E1}; |
| ES0 = flag ? ES0 : new Class(); |
| ES1 = flag ? ES1 : new Inter[] {ES0}; |
| ES2 = flag ? ES2 : new Inter[][] {ES1}; |
| EP0 = flag ? EP0 : new Class(); |
| EP1 = flag ? EP1 : new Inter[] {EP0}; |
| EP2 = flag ? EP2 : new Inter[][] {EP1}; |
| EU0 = flag ? EU0 : new Class(); |
| EU1 = flag ? EU1 : new Inter[] {EU0}; |
| EU2 = flag ? EU2 : new Inter[][] {EU1}; |
| ER0 = flag ? ER0 : new Class(); |
| ER1 = flag ? ER1 : new Inter[] {ER0}; |
| ER2 = flag ? ER2 : new Inter[][] {ER1}; |
| ET0 = flag ? ET0 : new Class(); |
| ET1 = flag ? ET1 : new Inter[] {ET0}; |
| ET2 = flag ? ET2 : new Inter[][] {ET1}; |
| EV0 = flag ? EV0 : new Class(); |
| EV1 = flag ? EV1 : new Inter[] {EV0}; |
| EV2 = flag ? EV2 : new Inter[][] {EV1}; |
| } |
| |
| } |