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 # @key intermittent
  29 # @summary Redefine class can't handle addition of 64 bit constants in JDK1.5.0_05
  30 #
  31 # @run shell RedefineIntConstantToLong.sh
  32 
  33 compileOptions=-g
  34 compileOptions2=-g
  35 
  36 # Uncomment this to see the JDI trace
  37 #jdbOptions=-dbgtrace
  38 
  39 createJavaFile()
  40 {
  41     cat <<EOF > $1.java.1
  42 
  43 public final class $1 {
  44 
  45     public long m1(int i) {
  46         long r=0;
  47         r = m2(i * 2); // @1 commentout
  48         // @1 uncomment      r =m2(i * 2L);
  49         return r;
  50     }
  51 
  52     public long m2(int j) {
  53         System.out.println(System.getProperty("line.separator") +
  54                            "**** public long m2(int j) with value: " + j);
  55         return j;
  56     }
  57 
  58     public long m2(long j) {
  59         System.out.println(System.getProperty("line.separator") +
  60                            "**** public long m2(long j) with value: " + j);
  61         return j;
  62     }
  63 
  64     public void doit() throws Exception {
  65         long r1 = 0;
  66         long r2;
  67         r1 = m1(1000);
  68         r2 = 0;         // @1 breakpoint
  69         r2 = m1(1000);
  70         if (r1 != r2) { // @1 breakpoint
  71              throw new Exception("FAILURE: Expected value: " + r1 + " Actual value: " + r2);
  72         } else {
  73              System.out.println("SUCCESS: Expected value: " + r1 + " Actual value: " + r2);
  74         }
  75     }
  76 
  77     public static void main(String args[]) throws Exception {
  78         new $1().doit();
  79     }
  80 }
  81 EOF
  82 }
  83 
  84 # This is called to feed cmds to jdb.
  85 dojdbCmds()
  86 {
  87     setBkpts @1
  88     runToBkpt @1
  89     redefineClass @1
  90     setBkpts @1
  91     contToBkpt
  92     cmd where
  93     cmd allowExit cont
  94 }
  95 
  96 
  97 mysetup()
  98 {
  99     if [ -z "$TESTSRC" ] ; then
 100         TESTSRC=.
 101     fi
 102 
 103     for ii in . $TESTSRC $TESTSRC/.. ; do
 104         if [ -r "$ii/ShellScaffold.sh" ] ; then
 105             . $ii/ShellScaffold.sh
 106             break
 107         fi
 108     done
 109 }
 110 
 111 # You could replace this next line with the contents
 112 # of ShellScaffold.sh and this script will run just the same.
 113 mysetup
 114 
 115 runit
 116 
 117 jdbFailIfPresent 'FAILURE:'
 118 pass