hotspot/src/share/vm/classfile/packageEntry.cpp
changeset 46554 aa1cfd918c4f
parent 46475 75902cea18af
child 46729 c62d2e8b2728
--- a/hotspot/src/share/vm/classfile/packageEntry.cpp	Wed Jul 05 23:44:18 2017 +0200
+++ b/hotspot/src/share/vm/classfile/packageEntry.cpp	Thu Jun 22 00:51:07 2017 +0200
@@ -101,7 +101,6 @@
     // 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);
@@ -111,6 +110,11 @@
 // Set the package as exported to all unnamed modules unless the package is
 // already unqualifiedly exported.
 void PackageEntry::set_is_exported_allUnnamed() {
+  if (module()->is_open()) {
+    // No-op for open modules since all packages are unqualifiedly exported
+    return;
+  }
+
   MutexLocker m1(Module_lock);
   if (!is_unqual_exported()) {
    _export_flags = PKG_EXP_ALLUNNAMED;
@@ -170,8 +174,6 @@
 }
 
 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) {
@@ -208,11 +210,6 @@
   // Initialize fields specific to a PackageEntry
   entry->init();
   entry->name()->increment_refcount();
-  if (!module->is_named()) {
-    // Set the exported state to true because all packages
-    // within the unnamed module are unqualifiedly exported
-    entry->set_unqual_exported();
-  }
   entry->set_module(module);
   return entry;
 }
@@ -272,6 +269,7 @@
 // Called when a define module for java.base is being processed.
 // Verify the packages loaded thus far are in java.base's package list.
 void PackageEntryTable::verify_javabase_packages(GrowableArray<Symbol*> *pkg_list) {
+  assert_lock_strong(Module_lock);
   for (int i = 0; i < table_size(); i++) {
     for (PackageEntry* entry = bucket(i);
                        entry != NULL;
@@ -352,18 +350,7 @@
 }
 
 void PackageEntryTable::verify() {
-  int element_count = 0;
-  for (int index = 0; index < table_size(); index++) {
-    for (PackageEntry* probe = bucket(index);
-                              probe != NULL;
-                              probe = probe->next()) {
-      probe->verify();
-      element_count++;
-    }
-  }
-  guarantee(number_of_entries() == element_count,
-            "Verify of Package Entry Table failed");
-  DEBUG_ONLY(verify_lookup_length((double)number_of_entries() / table_size(), "Package Entry Table"));
+  verify_table<PackageEntry>("Package Entry Table");
 }
 
 void PackageEntry::verify() {