make/hotspot.script

Mon, 21 Jul 2014 10:00:31 +0200

author
tschatzl
date
Mon, 21 Jul 2014 10:00:31 +0200
changeset 7018
a22acf6d7598
parent 6198
55fb97c4c58d
child 6876
710a3c8b516e
permissions
-rw-r--r--

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

mercurial