229 assert(_archived_packages_entries->get(this) == nullptr, "Each PackageEntry must not be shared across PackageEntryTables");
230 _archived_packages_entries->put(this, archived_entry);
231
232 return archived_entry;
233 }
234
235 PackageEntry* PackageEntry::get_archived_entry(PackageEntry* orig_entry) {
236 PackageEntry** ptr = _archived_packages_entries->get(orig_entry);
237 if (ptr != nullptr) {
238 return *ptr;
239 } else {
240 return nullptr;
241 }
242 }
243
244 void PackageEntry::iterate_symbols(MetaspaceClosure* closure) {
245 closure->push(&_name);
246 }
247
248 void PackageEntry::init_as_archived_entry() {
249 Array<ModuleEntry*>* archived_qualified_exports = ModuleEntry::write_growable_array(_qualified_exports);
250
251 _name = ArchiveBuilder::get_buffered_symbol(_name);
252 _module = ModuleEntry::get_archived_entry(_module);
253 _qualified_exports = (GrowableArray<ModuleEntry*>*)archived_qualified_exports;
254 _defined_by_cds_in_class_path = 0;
255 JFR_ONLY(set_trace_id(0);) // re-init at runtime
256
257 ArchivePtrMarker::mark_pointer((address*)&_name);
258 ArchivePtrMarker::mark_pointer((address*)&_module);
259 ArchivePtrMarker::mark_pointer((address*)&_qualified_exports);
260 }
261
262 void PackageEntry::load_from_archive() {
263 _qualified_exports = ModuleEntry::restore_growable_array((Array<ModuleEntry*>*)_qualified_exports);
264 JFR_ONLY(INIT_ID(this);)
265 }
266
267 static int compare_package_by_name(PackageEntry* a, PackageEntry* b) {
268 assert(a == b || a->name() != b->name(), "no duplicated names");
269 return a->name()->fast_compare(b->name());
|
229 assert(_archived_packages_entries->get(this) == nullptr, "Each PackageEntry must not be shared across PackageEntryTables");
230 _archived_packages_entries->put(this, archived_entry);
231
232 return archived_entry;
233 }
234
235 PackageEntry* PackageEntry::get_archived_entry(PackageEntry* orig_entry) {
236 PackageEntry** ptr = _archived_packages_entries->get(orig_entry);
237 if (ptr != nullptr) {
238 return *ptr;
239 } else {
240 return nullptr;
241 }
242 }
243
244 void PackageEntry::iterate_symbols(MetaspaceClosure* closure) {
245 closure->push(&_name);
246 }
247
248 void PackageEntry::init_as_archived_entry() {
249 Array<ModuleEntry*>* archived_qualified_exports = ModuleEntry::write_growable_array(module(), _qualified_exports);
250
251 _name = ArchiveBuilder::get_buffered_symbol(_name);
252 _module = ModuleEntry::get_archived_entry(_module);
253 _qualified_exports = (GrowableArray<ModuleEntry*>*)archived_qualified_exports;
254 _defined_by_cds_in_class_path = 0;
255 JFR_ONLY(set_trace_id(0);) // re-init at runtime
256
257 ArchivePtrMarker::mark_pointer((address*)&_name);
258 ArchivePtrMarker::mark_pointer((address*)&_module);
259 ArchivePtrMarker::mark_pointer((address*)&_qualified_exports);
260 }
261
262 void PackageEntry::load_from_archive() {
263 _qualified_exports = ModuleEntry::restore_growable_array((Array<ModuleEntry*>*)_qualified_exports);
264 JFR_ONLY(INIT_ID(this);)
265 }
266
267 static int compare_package_by_name(PackageEntry* a, PackageEntry* b) {
268 assert(a == b || a->name() != b->name(), "no duplicated names");
269 return a->name()->fast_compare(b->name());
|