23 */
24
25 #ifndef SHARE_VM_CLASSFILE_MODULEENTRY_HPP
26 #define SHARE_VM_CLASSFILE_MODULEENTRY_HPP
27
28 #include "jni.h"
29 #include "classfile/classLoaderData.hpp"
30 #include "classfile/vmSymbols.hpp"
31 #include "oops/oopHandle.hpp"
32 #include "oops/symbol.hpp"
33 #include "runtime/jniHandles.hpp"
34 #include "runtime/mutexLocker.hpp"
35 #include "utilities/growableArray.hpp"
36 #include "utilities/hashtable.hpp"
37 #include "utilities/macros.hpp"
38 #include "utilities/ostream.hpp"
39 #if INCLUDE_JFR
40 #include "jfr/support/jfrTraceIdExtension.hpp"
41 #endif
42
43 #define UNNAMED_MODULE "Unnamed Module"
44 #define JAVAPKG "java"
45 #define JAVAPKG_LEN 4
46 #define JAVA_BASE_NAME "java.base"
47
48 class ModuleClosure;
49
50 // A ModuleEntry describes a module that has been defined by a call to JVM_DefineModule.
51 // It contains:
52 // - Symbol* containing the module's name.
53 // - pointer to the java.lang.Module for this module.
54 // - pointer to the java.security.ProtectionDomain shared by classes defined to this module.
55 // - ClassLoaderData*, class loader of this module.
56 // - a growable array containg other module entries that this module can read.
57 // - a flag indicating if this module can read all unnamed modules.
58 //
59 // The Mutex Module_lock is shared between ModuleEntry and PackageEntry, to lock either
60 // data structure.
61 class ModuleEntry : public HashtableEntry<Symbol*, mtModule> {
62 private:
63 OopHandle _module; // java.lang.Module
64 OopHandle _pd; // java.security.ProtectionDomain, cached
65 // for shared classes from this module
66 ClassLoaderData* _loader_data;
|
23 */
24
25 #ifndef SHARE_VM_CLASSFILE_MODULEENTRY_HPP
26 #define SHARE_VM_CLASSFILE_MODULEENTRY_HPP
27
28 #include "jni.h"
29 #include "classfile/classLoaderData.hpp"
30 #include "classfile/vmSymbols.hpp"
31 #include "oops/oopHandle.hpp"
32 #include "oops/symbol.hpp"
33 #include "runtime/jniHandles.hpp"
34 #include "runtime/mutexLocker.hpp"
35 #include "utilities/growableArray.hpp"
36 #include "utilities/hashtable.hpp"
37 #include "utilities/macros.hpp"
38 #include "utilities/ostream.hpp"
39 #if INCLUDE_JFR
40 #include "jfr/support/jfrTraceIdExtension.hpp"
41 #endif
42
43 #define UNNAMED_MODULE "unnamed module"
44 #define UNNAMED_MODULE_LEN 14
45 #define JAVAPKG "java"
46 #define JAVAPKG_LEN 4
47 #define JAVA_BASE_NAME "java.base"
48 #define JAVA_BASE_NAME_LEN 9
49
50 class ModuleClosure;
51
52 // A ModuleEntry describes a module that has been defined by a call to JVM_DefineModule.
53 // It contains:
54 // - Symbol* containing the module's name.
55 // - pointer to the java.lang.Module for this module.
56 // - pointer to the java.security.ProtectionDomain shared by classes defined to this module.
57 // - ClassLoaderData*, class loader of this module.
58 // - a growable array containg other module entries that this module can read.
59 // - a flag indicating if this module can read all unnamed modules.
60 //
61 // The Mutex Module_lock is shared between ModuleEntry and PackageEntry, to lock either
62 // data structure.
63 class ModuleEntry : public HashtableEntry<Symbol*, mtModule> {
64 private:
65 OopHandle _module; // java.lang.Module
66 OopHandle _pd; // java.security.ProtectionDomain, cached
67 // for shared classes from this module
68 ClassLoaderData* _loader_data;
|