test/jdk/com/sun/jdi/Redefine-g.sh
branchJDK-8200758-branch
changeset 56884 0b2da0fd5363
parent 56883 0d9b95700522
parent 51765 e10ade04afe5
child 56885 4c56efca06ca
equal deleted inserted replaced
56883:0d9b95700522 56884:0b2da0fd5363
     1 #!/bin/sh
       
     2 
       
     3 #
       
     4 # Copyright (c) 2002, 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 4777868
       
    28 #  @summary Compile with java -g, do a RedefineClasses, and you don't get local vars
       
    29 #  @author Jim Holmlund
       
    30 #
       
    31 #  @run shell Redefine-g.sh
       
    32 #pkg=untitled7
       
    33 
       
    34 # Compile the first version without -g and the 2nd version with -g.
       
    35 compileOptions=
       
    36 compileOptions2=-g
       
    37 #java=java_g
       
    38 
       
    39 # Uncomment this to see the JDI trace
       
    40 # jdbOptions=-dbgtrace
       
    41 
       
    42 createJavaFile()
       
    43 {
       
    44     cat <<EOF > $1.java.1
       
    45 
       
    46 public class $1 {
       
    47   public $1() {
       
    48   }
       
    49   public static void main(String[] args) {
       
    50     int gus = 22;
       
    51     $1 kk = new $1();
       
    52     kk.m1("ab");
       
    53   }
       
    54 
       
    55   void m1(String p1) {
       
    56     int m1l1 = 1;
       
    57     System.out.println("m1(String) called");
       
    58     m1(p1, "2nd");
       
    59     // @1 uncomment System.out.println("Hello Milpitas!");
       
    60   }
       
    61 
       
    62   void m1(String p1, String p2) {
       
    63     int m1l2 = 2;
       
    64     System.out.println("m2" + p1 + p2);  // @1 breakpoint
       
    65   }
       
    66 
       
    67 }
       
    68 EOF
       
    69 }
       
    70 
       
    71 # This is called to feed cmds to jdb.
       
    72 dojdbCmds()
       
    73 {
       
    74     setBkpts @1
       
    75     runToBkpt @1
       
    76     cmd where
       
    77     cmd locals
       
    78 
       
    79     redefineClass @1
       
    80     cmd where
       
    81     cmd locals
       
    82 
       
    83     cmd pop
       
    84     cmd where
       
    85     cmd locals
       
    86 
       
    87     cmd pop
       
    88     cmd where
       
    89     cmd locals
       
    90 
       
    91     cmd allowExit cont
       
    92 }
       
    93 
       
    94 
       
    95 mysetup()
       
    96 {
       
    97     if [ -z "$TESTSRC" ] ; then
       
    98         TESTSRC=.
       
    99     fi
       
   100 
       
   101     for ii in . $TESTSRC $TESTSRC/.. ; do
       
   102         if [ -r "$ii/ShellScaffold.sh" ] ; then
       
   103             . $ii/ShellScaffold.sh 
       
   104             break
       
   105         fi
       
   106     done
       
   107 }
       
   108 
       
   109 # You could replace this next line with the contents
       
   110 # of ShellScaffold.sh and this script will run just the same.
       
   111 mysetup
       
   112 
       
   113 runit
       
   114 
       
   115 jdbFailIfNotPresent 'p1 = "ab"'
       
   116 jdbFailIfNotPresent 'p2 = "2nd"'
       
   117 jdbFailIfNotPresent 'm1l2 = 2'
       
   118 jdbFailIfPresent    'm1l1'
       
   119 
       
   120 jdbFailIfNotPresent 'args = instance of java.lang.String'
       
   121 jdbFailIfNotPresent 'gus = 22'
       
   122 jdbFailIfNotPresent 'kk = instance of shtest'
       
   123 pass