--- old/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/HotSpotGraalCompilerFactory.java 2017-04-21 12:14:53.000000000 +0200 +++ new/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/HotSpotGraalCompilerFactory.java 2017-04-21 12:14:53.000000000 +0200 @@ -33,6 +33,7 @@ import java.lang.reflect.Field; import java.util.HashMap; import java.util.Map; +import java.util.Map.Entry; import java.util.Properties; import java.util.ServiceLoader; @@ -50,6 +51,7 @@ import jdk.vm.ci.hotspot.HotSpotSignature; import jdk.vm.ci.hotspot.HotSpotJVMCICompilerFactory; import jdk.vm.ci.runtime.JVMCIRuntime; +import jdk.vm.ci.services.Services; public final class HotSpotGraalCompilerFactory extends HotSpotJVMCICompilerFactory { @@ -135,8 +137,8 @@ if (allOptionsSettings == null) { try (InitTimer t = timer("InitializeOptions")) { ServiceLoader loader = ServiceLoader.load(OptionDescriptors.class, OptionDescriptors.class.getClassLoader()); - Properties savedProps = getSavedProperties(Java8OrEarlier); - String optionsFile = savedProps.getProperty(GRAAL_OPTIONS_FILE_PROPERTY_NAME); + Map savedProps = Services.getSavedProperties(); + String optionsFile = savedProps.get(GRAAL_OPTIONS_FILE_PROPERTY_NAME); if (optionsFile != null) { File graalOptions = new File(optionsFile); @@ -165,15 +167,15 @@ } Map optionSettings = new HashMap<>(); - for (Map.Entry e : savedProps.entrySet()) { - String name = (String) e.getKey(); + for (Entry e : savedProps.entrySet()) { + String name = e.getKey(); if (name.startsWith(GRAAL_OPTION_PROPERTY_PREFIX)) { if (name.equals("graal.PrintFlags") || name.equals("graal.ShowFlags")) { System.err.println("The " + name + " option has been removed and will be ignored. Use -XX:+JVMCIPrintProperties instead."); } else if (name.equals(GRAAL_OPTIONS_FILE_PROPERTY_NAME) || name.equals(GRAAL_VERSION_PROPERTY_NAME) || name.equals(PROFILE_OPTIONVALUE_PROPERTY_NAME)) { // Ignore well known properties that do not denote an option } else { - String value = (String) e.getValue(); + String value = e.getValue(); optionSettings.put(name.substring(GRAAL_OPTION_PROPERTY_PREFIX.length()), value); } } @@ -206,18 +208,6 @@ } } - private static Properties getSavedProperties(boolean jdk8OrEarlier) { - try { - String vmClassName = jdk8OrEarlier ? "sun.misc.VM" : "jdk.internal.misc.VM"; - Class vmClass = Class.forName(vmClassName); - Field savedPropsField = vmClass.getDeclaredField("savedProps"); - savedPropsField.setAccessible(true); - return (Properties) savedPropsField.get(null); - } catch (Exception e) { - throw new GraalError(e); - } - } - @Override public HotSpotGraalCompiler createCompiler(JVMCIRuntime runtime) { HotSpotGraalCompiler compiler = createCompiler(runtime, CompilerConfigurationFactory.selectFactory(null));