blob: 9273888656fb4951b1dcbfd870d4c89112f16a9b [file] [log] [blame]
J. Duke319a3b92007-12-01 00:00:00 +00001#!/bin/sh
2
3#
4# Copyright 2002-2007 Sun Microsystems, Inc. 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
22# CA 95054 USA or visit www.sun.com if you need additional information or
23# have any questions.
24#
25
26# @test
27# @bug 4628760
28# @summary RedefineClasses gets assertion: "Should be a method entry in cpcache!"
29# @author jjh
30#
31# @run shell/timeout=180 RedefineClasses.sh
32
33# On windows, with b90, this gets this:
34# assert(u2_at_bcp >= 0 && u2_at_bcp < old_cache->length(), "Bad cpcache index!")
35#
36# Error happened during: VM_RedefineClasses
37#
38# Error ID: D:/jdk1.4/hotspot\src\share\vm\prims\jvmdi_hotswap.cpp, 331
39
40# On solaris, and on windows with 4559100 fixed, this test fails with:
41#
42# HotSpot Virtual Machine Error, assertion failure
43# Please report this error at
44# http://java.sun.com/cgi-bin/bugreport.cgi
45#
46# Java VM: Java HotSpot(TM) Client VM (1.4-internal-debug mixed mode)
47#
48# assert(old_cache->entry_at(u2_at_bcp)->is_method_entry(), "Should be a method entry in cpcache!")
49#
50# Error happened during: VM_RedefineClasses
51#
52# Error ID: M:\ws\m\b2\service_hs_baseline\src\share\vm\prims\jvmdi_hotswap.cpp, 335
53
54
55# With -Xcomp on solaris this passes, but takes 2 minutes, thus the /timeout above.
56
57# These are variables that can be set to control execution
58
59java=java
60
61createJavaFile()
62{
63 cat <<EOF > $1.java.1
64
65
66import java.lang.Thread;
67import java.util.HashMap;
68import javax.swing.*;
69import java.util.*;
70
71
72public class $1 {
73 int xxx = 20;
74 //ThreadGroup k = new ThreadGroup("group");
75 int i;
76
77 public $1() {
78 }
79
80 public void a1() {
81 a2();
82 }
83
84 public void a2() {
85 a3();
86 }
87
88 public void a3() {
89 System.out.println("out from a3"); // @1 breakpoint
90 //System.out.println("hello world"); // @ 1 delete this isn't even necesary
91 }
92 public void a4() {
93 System.out.println("in a4");
94 int i = 2;
95 int j = 3333;
96 System.out.println("i + j = " + (i + j));
97 System.out.println("out from a4");
98 System.out.println("def");
99 a1();
100 }
101
102 public void aa() {
103 a4();
104 System.out.println("out from aa");
105 }
106
107
108 public static void main(String[] args) {
109 byte xyz[] = new byte[] { 'a', 'b', 'c' };
110
111 int x1 = 100;
112 x1 = 101;
113 x1 = 102;
114 x1 = 103;
115 String m1 = "def";
116 String m2 = "abc";
117 String m3 = "def";
118
119 int[] m = new int[] { 100, 200, 300 };
120
121 $1 untitled31 = new $1();
122 untitled31.aa();
123 }
124}
125
126EOF
127}
128
129# This is called to feed cmds to jdb.
130dojdbCmds()
131{
132 setBkpts @1
133 runToBkpt
134 cmd redefine $classname $tmpFileDir/$classname.class
135 cmd redefine $classname $tmpFileDir/$classname.class
136 cmd redefine $classname $tmpFileDir/$classname.class
137 cmd quit
138}
139
140
141mysetup()
142{
143 if [ -z "$TESTSRC" ] ; then
144 TESTSRC=.
145 fi
146
147 for ii in . $TESTSRC $TESTSRC/.. ; do
148 if [ -r "$ii/ShellScaffold.sh" ] ; then
149 . $ii/ShellScaffold.sh
150 break
151 fi
152 done
153}
154
155# You could replace this next line with the contents
156# of ShellScaffold.sh and this script will run just the same.
157mysetup
158
159runit
160pass