< prev index next >
src/share/vm/classfile/packageEntry.cpp
Print this page
*** 96,116 ****
// Illegal to convert an unqualified exported package to be qualifiedly exported
return;
}
if (m == NULL) {
! // NULL indicates the package is being unqualifiedly exported
! if (has_qual_exports_list()) {
! // Legit to transition a package from being qualifiedly exported
! // to unqualified. Clean up the qualified lists at the next
! // safepoint.
! _exported_pending_delete = _qualified_exports;
! }
!
! // Mark package as unqualifiedly exported
set_unqual_exported();
-
} else {
// Add the exported module
add_qexport(m);
}
}
--- 96,108 ----
// Illegal to convert an unqualified exported package to be qualifiedly exported
return;
}
if (m == NULL) {
! // NULL indicates the package is being unqualifiedly exported. Clean up
! // the qualified list at the next safepoint.
set_unqual_exported();
} else {
// Add the exported module
add_qexport(m);
}
}
*** 158,189 ****
}
}
void PackageEntry::delete_qualified_exports() {
assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint");
- if (_exported_pending_delete != NULL) {
- // If a transition occurred from qualified to unqualified, the _qualified_exports
- // field should have been NULL'ed out.
- assert(_qualified_exports == NULL, "Package's exported pending delete, exported list should not be active");
- delete _exported_pending_delete;
- }
-
if (_qualified_exports != NULL) {
delete _qualified_exports;
}
-
- _exported_pending_delete = NULL;
_qualified_exports = NULL;
}
PackageEntryTable::PackageEntryTable(int table_size)
: Hashtable<Symbol*, mtModule>(table_size, sizeof(PackageEntry))
{
}
PackageEntryTable::~PackageEntryTable() {
! assert_locked_or_safepoint(Module_lock);
// Walk through all buckets and all entries in each bucket,
// freeing each entry.
for (int i = 0; i < table_size(); ++i) {
for (PackageEntry* p = bucket(i); p != NULL;) {
--- 150,172 ----
}
}
void PackageEntry::delete_qualified_exports() {
assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint");
if (_qualified_exports != NULL) {
delete _qualified_exports;
}
_qualified_exports = NULL;
}
PackageEntryTable::PackageEntryTable(int table_size)
: Hashtable<Symbol*, mtModule>(table_size, sizeof(PackageEntry))
{
}
PackageEntryTable::~PackageEntryTable() {
! assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint");
// Walk through all buckets and all entries in each bucket,
// freeing each entry.
for (int i = 0; i < table_size(); ++i) {
for (PackageEntry* p = bucket(i); p != NULL;) {
*** 300,315 ****
}
// iteration of qualified exports
void PackageEntry::package_exports_do(ModuleClosure* const f) {
- assert_locked_or_safepoint(Module_lock);
assert(f != NULL, "invariant");
-
if (has_qual_exports_list()) {
int qe_len = _qualified_exports->length();
-
for (int i = 0; i < qe_len; ++i) {
f->do_module(_qualified_exports->at(i));
}
}
}
--- 283,295 ----
< prev index next >