diff --git a/prism/src/bin/prism.cygwin b/prism/src/bin/prism.cygwin index 7ba3346e..3b63f732 100644 --- a/prism/src/bin/prism.cygwin +++ b/prism/src/bin/prism.cygwin @@ -10,6 +10,8 @@ if [ "$PRISM_JAVA" = "" ]; then PRISM_JAVA=java fi +#### Java heap size handling (either via -javamaxmem argument or PRISM_JAVAMAXMEM environment variable) + # If there is a -javamaxmem switch, use it for PRISM_JAVAMAXMEM ARGS=( "$@" ) for ((i=0;i<${#ARGS[@]};i+=1)); do @@ -33,7 +35,34 @@ else # default PRISM_JAVAMAXMEM="-Xmx1g" fi -PRISM_JAVASTACKSIZE="-Xss4M" + +#### Java stack size handling (either via -javastack argument or PRISM_JAVASTACKSIZE environment variable) + +# If there is a -javastack switch, use it for PRISM_JAVASTACKSIZE +for ((i=0;i<${#ARGS[@]};i+=1)); do + if [ "${ARGS[$i]}" = "-javastack" ]; then + PRISM_JAVASTACKSIZE=${ARGS[$i+1]} + PRISM_JAVASTACKSIZE=`echo "$PRISM_JAVASTACKSIZE" | awk /^[0-9]+[kmg]?$/` + if [ "$PRISM_JAVASTACKSIZE" = "" ]; then + echo; echo "Error: Invalid value for -javastack switch."; exit + fi + fi +done + +# Stack size for Java +if [ "$PRISM_JAVASTACKSIZE" != "" ]; then + PRISM_JAVASTACKSIZE=`echo "$PRISM_JAVASTACKSIZE" | awk /^[0-9]+[kmg]?$/` + if [ "$PRISM_JAVASTACKSIZE" = "" ]; then + echo; echo "Error: Environment variable PRISM_JAVASTACKSIZE is invalid."; exit + fi + PRISM_JAVASTACKSIZE="-Xss$PRISM_JAVASTACKSIZE" +else + # default (4 MB) + PRISM_JAVASTACKSIZE="-Xss4m" +fi + +#### + # Set up CLASSPATH: # - PRISM jar file (for binary versions) (gets priority) diff --git a/prism/src/bin/prism.darwin32 b/prism/src/bin/prism.darwin32 index afa71aff..a43a0494 100755 --- a/prism/src/bin/prism.darwin32 +++ b/prism/src/bin/prism.darwin32 @@ -24,6 +24,8 @@ if [ "$PRISM_JAVA" = "" ]; then fi fi +#### Java heap size handling (either via -javamaxmem argument or PRISM_JAVAMAXMEM environment variable) + # If there is a -javamaxmem switch, use it for PRISM_JAVAMAXMEM ARGS=( "$@" ) for ((i=0;i<${#ARGS[@]};i+=1)); do @@ -47,7 +49,34 @@ else # default PRISM_JAVAMAXMEM="-Xmx1g" fi -PRISM_JAVASTACKSIZE="-Xss4M" + +#### Java stack size handling (either via -javastack argument or PRISM_JAVASTACKSIZE environment variable) + +# If there is a -javastack switch, use it for PRISM_JAVASTACKSIZE +for ((i=0;i<${#ARGS[@]};i+=1)); do + if [ "${ARGS[$i]}" = "-javastack" ]; then + PRISM_JAVASTACKSIZE=${ARGS[$i+1]} + PRISM_JAVASTACKSIZE=`echo "$PRISM_JAVASTACKSIZE" | awk /^[0-9]+[kmg]?$/` + if [ "$PRISM_JAVASTACKSIZE" = "" ]; then + echo; echo "Error: Invalid value for -javastack switch."; exit + fi + fi +done + +# Stack size for Java +if [ "$PRISM_JAVASTACKSIZE" != "" ]; then + PRISM_JAVASTACKSIZE=`echo "$PRISM_JAVASTACKSIZE" | awk /^[0-9]+[kmg]?$/` + if [ "$PRISM_JAVASTACKSIZE" = "" ]; then + echo; echo "Error: Environment variable PRISM_JAVASTACKSIZE is invalid."; exit + fi + PRISM_JAVASTACKSIZE="-Xss$PRISM_JAVASTACKSIZE" +else + # default (4 MB) + PRISM_JAVASTACKSIZE="-Xss4m" +fi + +#### + # Set up CLASSPATH: # - PRISM jar file (for binary versions) (gets priority) diff --git a/prism/src/bin/prism.darwin64 b/prism/src/bin/prism.darwin64 index afa71aff..a43a0494 100755 --- a/prism/src/bin/prism.darwin64 +++ b/prism/src/bin/prism.darwin64 @@ -24,6 +24,8 @@ if [ "$PRISM_JAVA" = "" ]; then fi fi +#### Java heap size handling (either via -javamaxmem argument or PRISM_JAVAMAXMEM environment variable) + # If there is a -javamaxmem switch, use it for PRISM_JAVAMAXMEM ARGS=( "$@" ) for ((i=0;i<${#ARGS[@]};i+=1)); do @@ -47,7 +49,34 @@ else # default PRISM_JAVAMAXMEM="-Xmx1g" fi -PRISM_JAVASTACKSIZE="-Xss4M" + +#### Java stack size handling (either via -javastack argument or PRISM_JAVASTACKSIZE environment variable) + +# If there is a -javastack switch, use it for PRISM_JAVASTACKSIZE +for ((i=0;i<${#ARGS[@]};i+=1)); do + if [ "${ARGS[$i]}" = "-javastack" ]; then + PRISM_JAVASTACKSIZE=${ARGS[$i+1]} + PRISM_JAVASTACKSIZE=`echo "$PRISM_JAVASTACKSIZE" | awk /^[0-9]+[kmg]?$/` + if [ "$PRISM_JAVASTACKSIZE" = "" ]; then + echo; echo "Error: Invalid value for -javastack switch."; exit + fi + fi +done + +# Stack size for Java +if [ "$PRISM_JAVASTACKSIZE" != "" ]; then + PRISM_JAVASTACKSIZE=`echo "$PRISM_JAVASTACKSIZE" | awk /^[0-9]+[kmg]?$/` + if [ "$PRISM_JAVASTACKSIZE" = "" ]; then + echo; echo "Error: Environment variable PRISM_JAVASTACKSIZE is invalid."; exit + fi + PRISM_JAVASTACKSIZE="-Xss$PRISM_JAVASTACKSIZE" +else + # default (4 MB) + PRISM_JAVASTACKSIZE="-Xss4m" +fi + +#### + # Set up CLASSPATH: # - PRISM jar file (for binary versions) (gets priority) diff --git a/prism/src/bin/prism.linux b/prism/src/bin/prism.linux index eca775d3..bc7f12d2 100755 --- a/prism/src/bin/prism.linux +++ b/prism/src/bin/prism.linux @@ -18,6 +18,8 @@ if [ "$PRISM_JAVA" = "" ]; then PRISM_JAVA=java fi +#### Java heap size handling (either via -javamaxmem argument or PRISM_JAVAMAXMEM environment variable) + # If there is a -javamaxmem switch, use it for PRISM_JAVAMAXMEM ARGS=( "$@" ) for ((i=0;i<${#ARGS[@]};i+=1)); do @@ -41,7 +43,34 @@ else # default PRISM_JAVAMAXMEM="-Xmx1g" fi -PRISM_JAVASTACKSIZE="-Xss4M" + +#### Java stack size handling (either via -javastack argument or PRISM_JAVASTACKSIZE environment variable) + +# If there is a -javastack switch, use it for PRISM_JAVASTACKSIZE +for ((i=0;i<${#ARGS[@]};i+=1)); do + if [ "${ARGS[$i]}" = "-javastack" ]; then + PRISM_JAVASTACKSIZE=${ARGS[$i+1]} + PRISM_JAVASTACKSIZE=`echo "$PRISM_JAVASTACKSIZE" | awk /^[0-9]+[kmg]?$/` + if [ "$PRISM_JAVASTACKSIZE" = "" ]; then + echo; echo "Error: Invalid value for -javastack switch."; exit + fi + fi +done + +# Stack size for Java +if [ "$PRISM_JAVASTACKSIZE" != "" ]; then + PRISM_JAVASTACKSIZE=`echo "$PRISM_JAVASTACKSIZE" | awk /^[0-9]+[kmg]?$/` + if [ "$PRISM_JAVASTACKSIZE" = "" ]; then + echo; echo "Error: Environment variable PRISM_JAVASTACKSIZE is invalid."; exit + fi + PRISM_JAVASTACKSIZE="-Xss$PRISM_JAVASTACKSIZE" +else + # default (4 MB) + PRISM_JAVASTACKSIZE="-Xss4m" +fi + +#### + # Set up CLASSPATH: # - PRISM jar file (for binary versions) (gets priority) diff --git a/prism/src/prism/PrismCL.java b/prism/src/prism/PrismCL.java index f5e4eab7..7edef11a 100644 --- a/prism/src/prism/PrismCL.java +++ b/prism/src/prism/PrismCL.java @@ -1090,10 +1090,10 @@ public class PrismCL implements PrismModelListener } exit(); } - // java max mem - else if (sw.equals("javamaxmem")) { + // java max mem & java stack size + else if (sw.equals("javamaxmem") || sw.equals("javastack")) { i++; - // ignore - this is dealt with before java is launched + // ignore argument and subsequent value, this is dealt with before java is launched } // timeout else if (sw.equals("timeout")) { @@ -2344,7 +2344,8 @@ public class PrismCL implements PrismModelListener mainLog.println("-nobuild ....................... Skip model construction (just do parse/export)"); mainLog.println("-test .......................... Enable \"test\" mode"); mainLog.println("-testall ....................... Enable \"test\" mode, but don't exit on error"); - mainLog.println("-javamaxmem .................... Set the maximum heap size for Java, e.g. 500m, 4g [default: 1g]"); + mainLog.println("-javamaxmem ................. Set the maximum heap size for Java, e.g. 500m, 4g [default: 1g]"); + mainLog.println("-javastack ................. Set the Java stack size [default: 4m]"); mainLog.println("-timeout ................... Exit after a time-out of seconds if not already terminated"); mainLog.println("-ng ............................ Run PRISM in Nailgun server mode; subsequent calls are then made via \"ngprism\""); mainLog.println(); diff --git a/prism/src/userinterface/GUIPrism.java b/prism/src/userinterface/GUIPrism.java index ba1a3ff4..05ce6a94 100644 --- a/prism/src/userinterface/GUIPrism.java +++ b/prism/src/userinterface/GUIPrism.java @@ -402,10 +402,11 @@ public class GUIPrism extends JFrame public void passCLArgs(String args[]) { // just before we get started, pass any command-line args to all plugins - // we first remove the -javamaxmem argument, if present + // we first remove the -javamaxmem/-javastack arguments, if present List argsCopy = new ArrayList(); for (int i = 0; i < args.length; i++) { - if (args[i].equals("-javamaxmem")) { + if (args[i].equals("-javamaxmem") || args[i].equals("-javastack")) { + // ignore argument and subsequent value i++; } else { argsCopy.add(args[i]);