Mon, 21 Jul 2014 10:00:31 +0200
8048112: G1 Full GC needs to support the case when the very first region is not available
Summary: Refactor preparation for compaction during Full GC so that it lazily initializes the first compaction point. This also avoids problems later when the first region may not be committed. Also reviewed by K. Barrett.
Reviewed-by: brutisso
1 #!/bin/sh
3 # Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
4 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 #
6 # This code is free software; you can redistribute it and/or modify it
7 # under the terms of the GNU General Public License version 2 only, as
8 # published by the Free Software Foundation.
9 #
10 # This code is distributed in the hope that it will be useful, but WITHOUT
11 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13 # version 2 for more details (a copy is included in the LICENSE file that
14 # accompanied this code).
15 #
16 # You should have received a copy of the GNU General Public License version
17 # 2 along with this work; if not, write to the Free Software Foundation,
18 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
19 #
20 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
21 # or visit www.oracle.com if you need additional information or have any
22 # questions.
25 # This script launches HotSpot.
26 #
27 # If the first parameter is either "-gdb" or "-gud", HotSpot will be
28 # launched inside gdb. "-gud" means "open an Emacs window and run gdb
29 # inside Emacs".
30 #
31 # If the first parameter is "-dbx", HotSpot will be launched inside dbx.
32 #
33 # If the first parameter is "-valgrind", HotSpot will be launched
34 # inside Valgrind (http://valgrind.kde.org) using the Memcheck skin,
35 # and with memory leak detection enabled. This currently (2005jan19)
36 # requires at least Valgrind 2.3.0. -Xmx16m will also be passed as
37 # the first parameter to HotSpot, since lowering HotSpot's memory
38 # consumption makes execution inside of Valgrind *a lot* faster.
39 #
42 #
43 # User changeable parameters ------------------------------------------------
44 #
46 # This is the name of the gdb binary to use
47 if [ ! "$GDB" ]
48 then
49 GDB=gdb
50 fi
52 # This is the name of the gdb binary to use
53 if [ ! "$DBX" ]
54 then
55 DBX=dbx
56 fi
58 # This is the name of the Valgrind binary to use
59 if [ ! "$VALGRIND" ]
60 then
61 VALGRIND=valgrind
62 fi
64 # This is the name of Emacs for running GUD
65 EMACS=emacs
67 #
68 # End of user changeable parameters -----------------------------------------
69 #
71 # Make sure the paths are fully specified, i.e. they must begin with /.
72 REL_MYDIR=`dirname $0`
73 MYDIR=`cd $REL_MYDIR && pwd`
75 #
76 # Look whether the user wants to run inside gdb
77 case "$1" in
78 -gdb)
79 MODE=gdb
80 shift
81 ;;
82 -gud)
83 MODE=gud
84 shift
85 ;;
86 -dbx)
87 MODE=dbx
88 shift
89 ;;
90 -valgrind)
91 MODE=valgrind
92 shift
93 ;;
94 *)
95 MODE=run
96 ;;
97 esac
99 if [ "${ALT_JAVA_HOME}" != "" ]; then
100 JDK=${ALT_JAVA_HOME%%/jre}
101 else
102 JDK=@@JDK_IMPORT_PATH@@
103 fi
105 if [ "${JDK}" = "" ]; then
106 echo "Failed to find JDK. Either ALT_JAVA_HOME is not set or JDK_IMPORT_PATH is empty."
107 fi
109 # We will set the LD_LIBRARY_PATH as follows:
110 # o $JVMPATH (directory portion only)
111 # o $JRE/lib/$ARCH
112 # followed by the user's previous effective LD_LIBRARY_PATH, if
113 # any.
114 JRE=$JDK/jre
115 JAVA_HOME=$JDK
116 export JAVA_HOME
118 ARCH=@@LIBARCH@@
119 SBP=${MYDIR}:${JRE}/lib/${ARCH}
122 # Set up a suitable LD_LIBRARY_PATH or DYLD_LIBRARY_PATH
123 OS=`uname -s`
124 if [ "${OS}" = "Darwin" ]
125 then
126 if [ -z "$DYLD_LIBRARY_PATH" ]
127 then
128 DYLD_LIBRARY_PATH="$SBP"
129 else
130 DYLD_LIBRARY_PATH="$SBP:$DYLD_LIBRARY_PATH"
131 fi
132 export DYLD_LIBRARY_PATH
133 else
134 # not 'Darwin'
135 if [ -z "$LD_LIBRARY_PATH" ]
136 then
137 LD_LIBRARY_PATH="$SBP"
138 else
139 LD_LIBRARY_PATH="$SBP:$LD_LIBRARY_PATH"
140 fi
141 export LD_LIBRARY_PATH
142 fi
144 JPARMS="-Dsun.java.launcher=gamma -XXaltjvm=$MYDIR $@ $JAVA_ARGS";
146 # Locate the java launcher
147 LAUNCHER=$JDK/bin/java
148 if [ ! -x $LAUNCHER ] ; then
149 echo Error: Cannot find the java launcher \"$LAUNCHER\"
150 exit 1
151 fi
153 GDBSRCDIR=$MYDIR
154 BASEDIR=`cd $MYDIR/../../.. && pwd`
156 init_gdb() {
157 # Create a gdb script in case we should run inside gdb
158 GDBSCR=/tmp/hsl.$$
159 rm -f $GDBSCR
160 cat >>$GDBSCR <<EOF
161 cd `pwd`
162 handle SIGUSR1 nostop noprint
163 handle SIGUSR2 nostop noprint
164 set args $JPARMS
165 file $LAUNCHER
166 directory $GDBSRCDIR
167 # Get us to a point where we can set breakpoints in libjvm.so
168 set breakpoint pending on
169 break JNI_CreateJavaVM
170 run
171 # Stop in JNI_CreateJavaVM
172 delete 1
173 # We can now set breakpoints wherever we like
174 EOF
175 }
178 case "$MODE" in
179 gdb)
180 init_gdb
181 $GDB -x $GDBSCR
182 rm -f $GDBSCR
183 ;;
184 gud)
185 init_gdb
186 # First find out what emacs version we're using, so that we can
187 # use the new pretty GDB mode if emacs -version >= 22.1
188 case `$EMACS -version 2> /dev/null` in
189 *GNU\ Emacs\ 2[23]*)
190 emacs_gud_cmd="gdba"
191 emacs_gud_args="--annotate=3"
192 ;;
193 *)
194 emacs_gud_cmd="gdb"
195 emacs_gud_args=
196 ;;
197 esac
198 $EMACS --eval "($emacs_gud_cmd \"$GDB $emacs_gud_args -x $GDBSCR\")";
199 rm -f $GDBSCR
200 ;;
201 dbx)
202 $DBX -s $HOME/.dbxrc -c "loadobject -load libjvm.so; stop in JNI_CreateJavaVM; run $JPARMS; delete all" $LAUNCHER
203 ;;
204 valgrind)
205 echo Warning: Defaulting to 16Mb heap to make Valgrind run faster, use -Xmx for larger heap
206 echo
207 $VALGRIND --tool=memcheck --leak-check=yes --num-callers=50 $LAUNCHER -Xmx16m $JPARMS
208 ;;
209 run)
210 LD_PRELOAD=$PRELOADING exec $LAUNCHER $JPARMS
211 ;;
212 *)
213 echo Error: Internal error, unknown launch mode \"$MODE\"
214 exit 1
215 ;;
216 esac
217 RETVAL=$?
218 exit $RETVAL