8010706: -Dnashorn.args system property to create command lines to wrapped nashorn.jar:s
authorlagergren
Tue, 26 Mar 2013 08:42:35 +0100
changeset 16533 6ae708677f92
parent 16532 fe016e9cae59
child 16534 6993b3541b28
8010706: -Dnashorn.args system property to create command lines to wrapped nashorn.jar:s Reviewed-by: hannesw, sundar
nashorn/docs/DEVELOPER_README
nashorn/src/jdk/nashorn/internal/runtime/options/Options.java
--- a/nashorn/docs/DEVELOPER_README	Mon Mar 25 18:20:16 2013 +0530
+++ b/nashorn/docs/DEVELOPER_README	Tue Mar 26 08:42:35 2013 +0100
@@ -13,6 +13,17 @@
 This documentation of the system property flags assume that the
 default value of the flag is false, unless otherwise specified.
 
+SYSTEM PROPERTY: -Dnashorn.args=<string>
+
+This property takes as its value a space separated list of Nashorn
+command line options that should be passed to Nashorn. This might be useful 
+in environments where it is hard to tell how a nashorn.jar is launched.
+
+Example:
+
+> java -Dnashorn.args="--lazy-complation --log=compiler" large-java-app-with-nashorn.jar 
+> ant -Dnashorn.args="--log=codegen" antjob
+
 SYSTEM PROPERTY: -Dnashorn.unstable.relink.threshold=x
 
 This property controls how many call site misses are allowed before a 
--- a/nashorn/src/jdk/nashorn/internal/runtime/options/Options.java	Mon Mar 25 18:20:16 2013 +0530
+++ b/nashorn/src/jdk/nashorn/internal/runtime/options/Options.java	Tue Mar 26 08:42:35 2013 +0100
@@ -66,6 +66,9 @@
     /** The options map of enabled options */
     private final TreeMap<String, Option<?>> options;
 
+    /** System property that can be used for command line option propagation */
+    private static final String NASHORN_ARGS_PROPERTY = "nashorn.args";
+
     /**
      * Constructor
      *
@@ -386,6 +389,14 @@
         final LinkedList<String> argList = new LinkedList<>();
         Collections.addAll(argList, args);
 
+    final String extra = getStringProperty(NASHORN_ARGS_PROPERTY, null);
+    if (extra != null) {
+        final StringTokenizer st = new StringTokenizer(extra);
+        while (st.hasMoreTokens()) {
+        argList.add(st.nextToken());
+        }
+    }
+
         while (!argList.isEmpty()) {
             final String arg = argList.remove(0);