src/java.base/share/classes/jdk/internal/module/Modules.java
changeset 50744 6c306d54366d
parent 47866 39db80b32b69
child 52427 3c6aa484536c
--- a/src/java.base/share/classes/jdk/internal/module/Modules.java	Sun Jun 24 15:02:08 2018 +0300
+++ b/src/java.base/share/classes/jdk/internal/module/Modules.java	Sun Jun 24 16:25:47 2018 +0100
@@ -35,6 +35,7 @@
 import java.security.PrivilegedAction;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 import java.util.Set;
 import java.util.function.Function;
 import java.util.stream.Collectors;
@@ -249,7 +250,19 @@
 
     }
 
-    // the top-most system layer
-    private static ModuleLayer topLayer;
+    /**
+     * Finds the module with the given name in the boot layer or any child
+     * layers created to load the "java.instrument" or "jdk.management.agent"
+     * modules into a running VM.
+     */
+    public static Optional<Module> findLoadedModule(String name) {
+        ModuleLayer top = topLayer;
+        if (top == null)
+            top = ModuleLayer.boot();
+        return top.findModule(name);
+    }
+
+    // the top-most layer
+    private static volatile ModuleLayer topLayer;
 
 }