39 // The System Dictionary and related data structures (e.g., placeholder table,
40 // loader constraints table) as well as the runtime representation of classes
41 // only reference ClassLoaderData.
42 //
43 // Instances of java.lang.ClassLoader holds a pointer to a ClassLoaderData that
44 // that represent the loader's "linking domain" in the JVM.
45 //
46 // The bootstrap loader (represented by NULL) also has a ClassLoaderData,
47 // the singleton class the_null_class_loader_data().
48
49 #include "precompiled.hpp"
50 #include "classfile/classLoaderData.hpp"
51 #include "classfile/classLoaderData.inline.hpp"
52 #include "classfile/dictionary.hpp"
53 #include "classfile/javaClasses.hpp"
54 #include "classfile/metadataOnStackMark.hpp"
55 #include "classfile/moduleEntry.hpp"
56 #include "classfile/packageEntry.hpp"
57 #include "classfile/systemDictionary.hpp"
58 #include "code/codeCache.hpp"
59 #include "gc/shared/gcLocker.hpp"
60 #include "logging/log.hpp"
61 #include "logging/logStream.hpp"
62 #include "memory/allocation.inline.hpp"
63 #include "memory/metadataFactory.hpp"
64 #include "memory/metaspaceShared.hpp"
65 #include "memory/oopFactory.hpp"
66 #include "memory/resourceArea.hpp"
67 #include "oops/access.inline.hpp"
68 #include "oops/objArrayOop.inline.hpp"
69 #include "oops/oop.inline.hpp"
70 #include "runtime/atomic.hpp"
71 #include "runtime/handles.inline.hpp"
72 #include "runtime/javaCalls.hpp"
73 #include "runtime/jniHandles.hpp"
74 #include "runtime/mutex.hpp"
75 #include "runtime/orderAccess.hpp"
76 #include "runtime/safepoint.hpp"
77 #include "runtime/synchronizer.hpp"
78 #include "utilities/growableArray.hpp"
79 #include "utilities/macros.hpp"
80 #include "utilities/ostream.hpp"
81 #if INCLUDE_TRACE
82 #include "trace/tracing.hpp"
83 #endif
84
85 volatile size_t ClassLoaderDataGraph::_num_array_classes = 0;
86 volatile size_t ClassLoaderDataGraph::_num_instance_classes = 0;
87
88 ClassLoaderData * ClassLoaderData::_the_null_class_loader_data = NULL;
89
90 void ClassLoaderData::init_null_class_loader_data() {
91 assert(_the_null_class_loader_data == NULL, "cannot initialize twice");
92 assert(ClassLoaderDataGraph::_head == NULL, "cannot initialize twice");
93
94 _the_null_class_loader_data = new ClassLoaderData(Handle(), false);
95 ClassLoaderDataGraph::_head = _the_null_class_loader_data;
96 assert(_the_null_class_loader_data->is_the_null_class_loader_data(), "Must be");
|
39 // The System Dictionary and related data structures (e.g., placeholder table,
40 // loader constraints table) as well as the runtime representation of classes
41 // only reference ClassLoaderData.
42 //
43 // Instances of java.lang.ClassLoader holds a pointer to a ClassLoaderData that
44 // that represent the loader's "linking domain" in the JVM.
45 //
46 // The bootstrap loader (represented by NULL) also has a ClassLoaderData,
47 // the singleton class the_null_class_loader_data().
48
49 #include "precompiled.hpp"
50 #include "classfile/classLoaderData.hpp"
51 #include "classfile/classLoaderData.inline.hpp"
52 #include "classfile/dictionary.hpp"
53 #include "classfile/javaClasses.hpp"
54 #include "classfile/metadataOnStackMark.hpp"
55 #include "classfile/moduleEntry.hpp"
56 #include "classfile/packageEntry.hpp"
57 #include "classfile/systemDictionary.hpp"
58 #include "code/codeCache.hpp"
59 #include "logging/log.hpp"
60 #include "logging/logStream.hpp"
61 #include "memory/allocation.inline.hpp"
62 #include "memory/metadataFactory.hpp"
63 #include "memory/metaspaceShared.hpp"
64 #include "memory/oopFactory.hpp"
65 #include "memory/resourceArea.hpp"
66 #include "oops/access.inline.hpp"
67 #include "oops/objArrayOop.inline.hpp"
68 #include "oops/oop.inline.hpp"
69 #include "runtime/atomic.hpp"
70 #include "runtime/handles.inline.hpp"
71 #include "runtime/javaCalls.hpp"
72 #include "runtime/jniHandles.hpp"
73 #include "runtime/mutex.hpp"
74 #include "runtime/orderAccess.hpp"
75 #include "runtime/safepoint.hpp"
76 #include "runtime/safepointVerifiers.hpp"
77 #include "runtime/synchronizer.hpp"
78 #include "utilities/growableArray.hpp"
79 #include "utilities/macros.hpp"
80 #include "utilities/ostream.hpp"
81 #if INCLUDE_TRACE
82 #include "trace/tracing.hpp"
83 #endif
84
85 volatile size_t ClassLoaderDataGraph::_num_array_classes = 0;
86 volatile size_t ClassLoaderDataGraph::_num_instance_classes = 0;
87
88 ClassLoaderData * ClassLoaderData::_the_null_class_loader_data = NULL;
89
90 void ClassLoaderData::init_null_class_loader_data() {
91 assert(_the_null_class_loader_data == NULL, "cannot initialize twice");
92 assert(ClassLoaderDataGraph::_head == NULL, "cannot initialize twice");
93
94 _the_null_class_loader_data = new ClassLoaderData(Handle(), false);
95 ClassLoaderDataGraph::_head = _the_null_class_loader_data;
96 assert(_the_null_class_loader_data->is_the_null_class_loader_data(), "Must be");
|