19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 * 23 */ 24 25 #ifndef SHARE_VM_CLASSFILE_MODULEENTRY_HPP 26 #define SHARE_VM_CLASSFILE_MODULEENTRY_HPP 27 28 #include "classfile/classLoaderData.hpp" 29 #include "classfile/vmSymbols.hpp" 30 #include "oops/symbol.hpp" 31 #include "prims/jni.h" 32 #include "runtime/mutexLocker.hpp" 33 #include "trace/traceMacros.hpp" 34 #include "utilities/growableArray.hpp" 35 #include "utilities/hashtable.hpp" 36 #include "utilities/ostream.hpp" 37 38 #define UNNAMED_MODULE "Unnamed Module" 39 #define JAVAPKG "java/" 40 #define JAVAPKG_LEN 5 41 #define JAVA_BASE_NAME "java.base" 42 43 class ModuleClosure; 44 45 // A ModuleEntry describes a module that has been defined by a call to JVM_DefineModule. 46 // It contains: 47 // - Symbol* containing the module's name. 48 // - pointer to the java.lang.reflect.Module for this module. 49 // - pointer to the java.security.ProtectionDomain shared by classes defined to this module. 50 // - ClassLoaderData*, class loader of this module. 51 // - a growable array containg other module entries that this module can read. 52 // - a flag indicating if this module can read all unnamed modules. 53 // 54 // The Mutex Module_lock is shared between ModuleEntry and PackageEntry, to lock either 55 // data structure. 56 class ModuleEntry : public HashtableEntry<Symbol*, mtModule> { 57 private: 58 jobject _module; // java.lang.reflect.Module 59 jobject _pd; // java.security.ProtectionDomain, cached 60 // for shared classes from this module | 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 * 23 */ 24 25 #ifndef SHARE_VM_CLASSFILE_MODULEENTRY_HPP 26 #define SHARE_VM_CLASSFILE_MODULEENTRY_HPP 27 28 #include "classfile/classLoaderData.hpp" 29 #include "classfile/vmSymbols.hpp" 30 #include "oops/symbol.hpp" 31 #include "prims/jni.h" 32 #include "runtime/mutexLocker.hpp" 33 #include "trace/traceMacros.hpp" 34 #include "utilities/growableArray.hpp" 35 #include "utilities/hashtable.hpp" 36 #include "utilities/ostream.hpp" 37 38 #define UNNAMED_MODULE "Unnamed Module" 39 #define JAVAPKG "java" 40 #define JAVAPKG_LEN 4 41 #define JAVA_BASE_NAME "java.base" 42 43 class ModuleClosure; 44 45 // A ModuleEntry describes a module that has been defined by a call to JVM_DefineModule. 46 // It contains: 47 // - Symbol* containing the module's name. 48 // - pointer to the java.lang.reflect.Module for this module. 49 // - pointer to the java.security.ProtectionDomain shared by classes defined to this module. 50 // - ClassLoaderData*, class loader of this module. 51 // - a growable array containg other module entries that this module can read. 52 // - a flag indicating if this module can read all unnamed modules. 53 // 54 // The Mutex Module_lock is shared between ModuleEntry and PackageEntry, to lock either 55 // data structure. 56 class ModuleEntry : public HashtableEntry<Symbol*, mtModule> { 57 private: 58 jobject _module; // java.lang.reflect.Module 59 jobject _pd; // java.security.ProtectionDomain, cached 60 // for shared classes from this module |