--- old/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/util/JDK9Wrappers.java 2016-08-08 16:37:37.000000000 -0700 +++ new/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/util/JDK9Wrappers.java 2016-08-08 16:37:37.000000000 -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); + } + } + } + } }