174 static ClassLoaderData* the_null_class_loader_data() {
175 return _the_null_class_loader_data;
176 }
177
178 bool is_anonymous() const { return _is_anonymous; }
179
180 static void init_null_class_loader_data() {
181 assert(_the_null_class_loader_data == NULL, "cannot initialize twice");
182 assert(ClassLoaderDataGraph::_head == NULL, "cannot initialize twice");
183 _the_null_class_loader_data = new ClassLoaderData((oop)NULL, false);
184 ClassLoaderDataGraph::_head = _the_null_class_loader_data;
185 assert(_the_null_class_loader_data->is_the_null_class_loader_data(), "Must be");
186 if (DumpSharedSpaces) {
187 _the_null_class_loader_data->initialize_shared_metaspaces();
188 }
189 }
190
191 bool is_the_null_class_loader_data() const {
192 return this == _the_null_class_loader_data;
193 }
194
195 // The Metaspace is created lazily so may be NULL. This
196 // method will allocate a Metaspace if needed.
197 Metaspace* metaspace_non_null();
198
199 oop class_loader() const { return _class_loader; }
200
201 // Returns true if this class loader data is for a loader going away.
202 bool is_unloading() const {
203 assert(!(is_the_null_class_loader_data() && _unloading), "The null class loader can never be unloaded");
204 return _unloading;
205 }
206 // Anonymous class loader data doesn't have anything to keep them from
207 // being unloaded during parsing the anonymous class.
208 void set_keep_alive(bool value) { _keep_alive = value; }
209
210 unsigned int identity_hash() {
211 return _class_loader == NULL ? 0 : _class_loader->identity_hash();
212 }
213
|
174 static ClassLoaderData* the_null_class_loader_data() {
175 return _the_null_class_loader_data;
176 }
177
178 bool is_anonymous() const { return _is_anonymous; }
179
180 static void init_null_class_loader_data() {
181 assert(_the_null_class_loader_data == NULL, "cannot initialize twice");
182 assert(ClassLoaderDataGraph::_head == NULL, "cannot initialize twice");
183 _the_null_class_loader_data = new ClassLoaderData((oop)NULL, false);
184 ClassLoaderDataGraph::_head = _the_null_class_loader_data;
185 assert(_the_null_class_loader_data->is_the_null_class_loader_data(), "Must be");
186 if (DumpSharedSpaces) {
187 _the_null_class_loader_data->initialize_shared_metaspaces();
188 }
189 }
190
191 bool is_the_null_class_loader_data() const {
192 return this == _the_null_class_loader_data;
193 }
194 bool is_ext_class_loader_data() const;
195
196 // The Metaspace is created lazily so may be NULL. This
197 // method will allocate a Metaspace if needed.
198 Metaspace* metaspace_non_null();
199
200 oop class_loader() const { return _class_loader; }
201
202 // Returns true if this class loader data is for a loader going away.
203 bool is_unloading() const {
204 assert(!(is_the_null_class_loader_data() && _unloading), "The null class loader can never be unloaded");
205 return _unloading;
206 }
207 // Anonymous class loader data doesn't have anything to keep them from
208 // being unloaded during parsing the anonymous class.
209 void set_keep_alive(bool value) { _keep_alive = value; }
210
211 unsigned int identity_hash() {
212 return _class_loader == NULL ? 0 : _class_loader->identity_hash();
213 }
214
|