< prev index next >

src/hotspot/share/classfile/packageEntry.cpp

Print this page

*** 34,43 **** --- 34,44 ---- #include "runtime/handles.inline.hpp" #include "utilities/events.hpp" #include "utilities/growableArray.hpp" #include "utilities/hashtable.inline.hpp" #include "utilities/ostream.hpp" + #include "utilities/quickSort.hpp" #include "utilities/resourceHash.hpp" // Returns true if this package specifies m as a qualified export, including through an unnamed export bool PackageEntry::is_qexported_to(ModuleEntry* m) const { assert(Module_lock->owned_by_self(), "should have the Module_lock");
*** 240,251 **** void PackageEntry::load_from_archive() { _qualified_exports = ModuleEntry::read_archived_entry_array((Array<ModuleEntry*>*)_qualified_exports); JFR_ONLY(INIT_ID(this);) } ! static int compare_package_by_name(PackageEntry** a, PackageEntry** b) { ! return a[0]->name()->fast_compare(b[0]->name()); } Array<PackageEntry*>* PackageEntryTable::allocate_archived_entries() { // First count the packages in named modules int n, i; --- 241,252 ---- void PackageEntry::load_from_archive() { _qualified_exports = ModuleEntry::read_archived_entry_array((Array<ModuleEntry*>*)_qualified_exports); JFR_ONLY(INIT_ID(this);) } ! static int compare_package_by_name(PackageEntry* a, PackageEntry* b) { ! return a->name()->fast_compare(b->name()); } Array<PackageEntry*>* PackageEntryTable::allocate_archived_entries() { // First count the packages in named modules int n, i;
*** 265,281 **** // created on-demand at runtime as classes in such packages are loaded. archived_packages->at_put(n++, p); } } } ! if (n > 0) { ! qsort(archived_packages->adr_at(0), n, sizeof(PackageEntry*), (_sort_Fn)compare_package_by_name); for (i = 0; i < n; i++) { archived_packages->at_put(i, archived_packages->at(i)->allocate_archived_entry()); ArchivePtrMarker::mark_pointer((address*)archived_packages->adr_at(i)); } - } return archived_packages; } void PackageEntryTable::init_archived_entries(Array<PackageEntry*>* archived_packages) { for (int i = 0; i < archived_packages->length(); i++) { --- 266,282 ---- // created on-demand at runtime as classes in such packages are loaded. archived_packages->at_put(n++, p); } } } ! if (n > 1) { ! QuickSort::sort(archived_packages->data(), n, (_sort_Fn)compare_package_by_name, true); ! } for (i = 0; i < n; i++) { archived_packages->at_put(i, archived_packages->at(i)->allocate_archived_entry()); ArchivePtrMarker::mark_pointer((address*)archived_packages->adr_at(i)); } return archived_packages; } void PackageEntryTable::init_archived_entries(Array<PackageEntry*>* archived_packages) { for (int i = 0; i < archived_packages->length(); i++) {
*** 285,306 **** } void PackageEntryTable::load_archived_entries(Array<PackageEntry*>* archived_packages) { assert(UseSharedSpaces, "runtime only"); - MutexLocker m1(Module_lock); for (int i = 0; i < archived_packages->length(); i++) { PackageEntry* archived_entry = archived_packages->at(i); archived_entry->load_from_archive(); unsigned int hash = compute_hash(archived_entry->name()); archived_entry->set_hash(hash); add_entry(hash_to_index(hash), archived_entry); } } ! #endif PackageEntry* PackageEntryTable::new_entry(unsigned int hash, Symbol* name, ModuleEntry* module) { assert(Module_lock->owned_by_self(), "should have the Module_lock"); PackageEntry* entry = (PackageEntry*)Hashtable<Symbol*, mtModule>::allocate_new_entry(hash, name); --- 286,306 ---- } void PackageEntryTable::load_archived_entries(Array<PackageEntry*>* archived_packages) { assert(UseSharedSpaces, "runtime only"); for (int i = 0; i < archived_packages->length(); i++) { PackageEntry* archived_entry = archived_packages->at(i); archived_entry->load_from_archive(); unsigned int hash = compute_hash(archived_entry->name()); archived_entry->set_hash(hash); add_entry(hash_to_index(hash), archived_entry); } } ! #endif // INCLUDE_CDS_JAVA_HEAP PackageEntry* PackageEntryTable::new_entry(unsigned int hash, Symbol* name, ModuleEntry* module) { assert(Module_lock->owned_by_self(), "should have the Module_lock"); PackageEntry* entry = (PackageEntry*)Hashtable<Symbol*, mtModule>::allocate_new_entry(hash, name);
*** 383,393 **** ResourceMark rm; vm_exit_during_initialization("A non-" JAVA_BASE_NAME " package was loaded prior to module system initialization", entry->name()->as_C_string()); } } } - } // iteration of qualified exports void PackageEntry::package_exports_do(ModuleClosure* f) { assert_locked_or_safepoint(Module_lock); --- 383,392 ----
< prev index next >