Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openjdk-multiarch-jdk8u
Path: blob/aarch64-shenandoah-jdk8u272-b10/jdk/test/com/sun/jdi/BreakpointWithFullGC.sh
38855 views
1
#!/bin/sh
2
3
#
4
# Copyright (c) 2009, 2013 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 6862295
28
# @summary Verify breakpoints still work after a full GC.
29
# @author dcubed (based on the test program posted to the following
30
# Eclipse thread https://bugs.eclipse.org/bugs/show_bug.cgi?id=279137)
31
#
32
# @run shell BreakpointWithFullGC.sh
33
34
compileOptions=-g
35
# Hijacking the mode parameter to make sure we use a small amount
36
# of memory and can see what GC is doing.
37
mode="-Xmx32m -verbose:gc"
38
# Force use of a GC framework collector to see the original failure.
39
#mode="$mode -XX:+UseSerialGC"
40
41
# Uncomment this to see the JDI trace
42
#jdbOptions=-dbgtrace
43
44
createJavaFile()
45
{
46
cat <<EOF > $1.java.1
47
48
import java.util.ArrayList;
49
import java.util.List;
50
51
public class $1 {
52
public static List<Object> objList = new ArrayList<Object>();
53
54
private static void init(int numObjs) {
55
for (int i = 0; i < numObjs; i++) {
56
objList.add(new Object());
57
}
58
}
59
60
public static void main(String[] args) {
61
for (int i = 0; i < 10; i++) {
62
System.out.println("top of loop"); // @1 breakpoint
63
init(500000);
64
objList.clear();
65
System.gc();
66
System.out.println("bottom of loop"); // @1 breakpoint
67
}
68
System.out.println("end of test"); // @1 breakpoint
69
}
70
}
71
72
EOF
73
}
74
75
# This is called to feed cmds to jdb.
76
dojdbCmds()
77
{
78
setBkpts @1
79
80
# get to the first loop breakpoint
81
runToBkpt
82
# 19 "cont" commands gets us through all the loop breakpoints.
83
# Use for-loop instead of while-loop to avoid creating processes
84
# for '[' and 'expr'.
85
for ii in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19; do
86
contToBkpt
87
done
88
# get to the last breakpoint
89
contToBkpt
90
}
91
92
93
mysetup()
94
{
95
if [ -z "$TESTSRC" ] ; then
96
TESTSRC=.
97
fi
98
99
for ii in . $TESTSRC $TESTSRC/.. ; do
100
if [ -r "$ii/ShellScaffold.sh" ] ; then
101
. $ii/ShellScaffold.sh
102
break
103
fi
104
done
105
}
106
107
# You could replace this next line with the contents
108
# of ShellScaffold.sh and this script will run just the same.
109
mysetup
110
111
runit
112
113
# make sure we hit the first breakpoint at least once
114
jdbFailIfNotPresent 'System\..*top of loop'
115
116
# make sure we hit the second breakpoint at least once
117
jdbFailIfNotPresent 'System\..*bottom of loop'
118
119
# make sure we hit the last breakpoint
120
jdbFailIfNotPresent 'System\..*end of test'
121
122
# make sure we had at least one full GC
123
debuggeeFailIfNotPresent 'Full GC'
124
125
# check for error message due to thread ID change
126
debuggeeFailIfPresent \
127
'Exception in thread "event-handler" java.lang.NullPointerException'
128
129
pass
130
131