1 #!/bin/sh
   2 
   3 #
   4 # Copyright (c) 2006, 2014 Oracle and/or its affiliates. All rights reserved.
   5 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   6 #
   7 # This code is free software; you can redistribute it and/or modify it
   8 # under the terms of the GNU General Public License version 2 only, as
   9 # published by the Free Software Foundation.
  10 #
  11 # This code is distributed in the hope that it will be useful, but WITHOUT
  12 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13 # FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14 # version 2 for more details (a copy is included in the LICENSE file that
  15 # accompanied this code).
  16 #
  17 # You should have received a copy of the GNU General Public License version
  18 # 2 along with this work; if not, write to the Free Software Foundation,
  19 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20 #
  21 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22 # or visit www.oracle.com if you need additional information or have any
  23 # questions.
  24 #
  25 
  26 #  @test
  27 #  @bug 6394084
  28 #  @summary Redefine class can't handle addition of 64 bit constants in JDK1.5.0_05
  29 #
  30 #  @run shell RedefineIntConstantToLong.sh
  31 
  32 compileOptions=-g
  33 compileOptions2=-g
  34 
  35 # Uncomment this to see the JDI trace
  36 #jdbOptions=-dbgtrace
  37 
  38 createJavaFile()
  39 {
  40     cat <<EOF > $1.java.1
  41 
  42 public final class $1 {
  43 
  44     public long m1(int i) {
  45         long r=0;
  46         r = m2(i * 2); // @1 commentout
  47         // @1 uncomment      r =m2(i * 2L);
  48         return r;
  49     }
  50 
  51     public long m2(int j) {
  52         System.out.println(System.getProperty("line.separator") + 
  53                            "**** public long m2(int j) with value: " + j);
  54         return j;
  55     }
  56 
  57     public long m2(long j) {
  58         System.out.println(System.getProperty("line.separator") + 
  59                            "**** public long m2(long j) with value: " + j);
  60         return j;
  61     }
  62 
  63     public void doit() throws Exception {
  64         long r1 = 0;
  65         long r2;
  66         r1 = m1(1000);
  67         r2 = 0;         // @1 breakpoint
  68         r2 = m1(1000);
  69         if (r1 != r2) { // @1 breakpoint
  70              throw new Exception("FAILURE: Expected value: " + r1 + " Actual value: " + r2);
  71         } else {
  72              System.out.println("SUCCESS: Expected value: " + r1 + " Actual value: " + r2);
  73         }
  74     }
  75 
  76     public static void main(String args[]) throws Exception {
  77         new $1().doit();
  78     }
  79 }
  80 EOF
  81 }
  82 
  83 # This is called to feed cmds to jdb.
  84 dojdbCmds()
  85 {
  86     setBkpts @1
  87     runToBkpt @1
  88     redefineClass @1
  89     setBkpts @1
  90     contToBkpt
  91     cmd where
  92     cmd allowExit cont
  93 }
  94 
  95 
  96 mysetup()
  97 {
  98     if [ -z "$TESTSRC" ] ; then
  99         TESTSRC=.
 100     fi
 101 
 102     for ii in . $TESTSRC $TESTSRC/.. ; do
 103         if [ -r "$ii/ShellScaffold.sh" ] ; then
 104             . $ii/ShellScaffold.sh 
 105             break
 106         fi
 107     done
 108 }
 109 
 110 # You could replace this next line with the contents
 111 # of ShellScaffold.sh and this script will run just the same.
 112 mysetup
 113 
 114 runit
 115 
 116 jdbFailIfPresent 'FAILURE:'
 117 pass