langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/util/JDK9Wrappers.java
changeset 40308 274367a99f98
parent 38533 2bd347dde526
child 41033 49af2ecba616
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/util/JDK9Wrappers.java	Wed Aug 10 13:52:02 2016 -0700
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/util/JDK9Wrappers.java	Wed Aug 10 15:47:46 2016 -0700
@@ -252,4 +252,40 @@
             }
         }
     }
+
+
+    /**
+     * Helper class for new method in jdk.internal.misc.VM.
+     */
+    public static final class VMHelper {
+        public static final String VM_CLASSNAME = "jdk.internal.misc.VM";
+
+        @SuppressWarnings("unchecked")
+        public static String[] getRuntimeArguments() {
+            try {
+                init();
+                Object result = getRuntimeArgumentsMethod.invoke(null);
+                return (String[])result;
+            } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException
+                    | SecurityException ex) {
+                throw new Abort(ex);
+            }
+        }
+
+        // -----------------------------------------------------------------------------------------
+
+        private static Class<?> vmClass = null;
+        private static Method getRuntimeArgumentsMethod = null;
+
+        private static void init() {
+            if (vmClass == null) {
+                try {
+                    vmClass = Class.forName(VM_CLASSNAME, false, null);
+                    getRuntimeArgumentsMethod = vmClass.getDeclaredMethod("getRuntimeArguments");
+                } catch (ClassNotFoundException | NoSuchMethodException | SecurityException ex) {
+                    throw new Abort(ex);
+                }
+            }
+        }
+    }
 }