changeset 24122:c6b5d927e67f

added Services.getSavedProperties (JDK-8177845)
author Doug Simon <doug.simon@oracle.com>
date Sat, 08 Apr 2017 16:11:10 +0200
parents 813c28963a9e
children b64eba7f886a
files jvmci/jdk.vm.ci.services/src/jdk/vm/ci/services/Services.java
diffstat 1 files changed, 21 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/jvmci/jdk.vm.ci.services/src/jdk/vm/ci/services/Services.java	Tue Apr 04 16:49:15 2017 +0200
+++ b/jvmci/jdk.vm.ci.services/src/jdk/vm/ci/services/Services.java	Sat Apr 08 16:11:10 2017 +0200
@@ -22,10 +22,13 @@
  */
 package jdk.vm.ci.services;
 
+import java.lang.reflect.Field;
 import java.util.Collections;
 import java.util.Formatter;
+import java.util.Properties;
 import java.util.ServiceLoader;
 
+import sun.misc.VM;
 import sun.reflect.Reflection;
 
 /**
@@ -38,6 +41,24 @@
     private Services() {
     }
 
+    /**
+     * Gets the system properties saved when {@link System} is initialized. The caller must not
+     * modify the returned value.
+     */
+    public static Properties getSavedProperties() {
+        SecurityManager sm = System.getSecurityManager();
+        if (sm != null) {
+            sm.checkPermission(new JVMCIPermission());
+        }
+        try {
+            Field savedPropsField = VM.class.getDeclaredField("savedProps");
+            savedPropsField.setAccessible(true);
+            return (Properties) savedPropsField.get(null);
+        } catch (Exception e) {
+            throw new InternalError(e);
+        }
+    }
+
     private static boolean jvmciEnabled = true;
 
     private static <S> Iterable<S> load0(Class<S> service) {