< prev index next >

src/share/vm/classfile/packageEntry.cpp

Print this page




 181       PackageEntry* to_remove = p;
 182       // read next before freeing.
 183       p = p->next();
 184 
 185       // Clean out the C heap allocated qualified exports list first before freeing the entry
 186       to_remove->delete_qualified_exports();
 187       to_remove->name()->decrement_refcount();
 188 
 189       // Unlink from the Hashtable prior to freeing
 190       unlink_entry(to_remove);
 191       FREE_C_HEAP_ARRAY(char, to_remove);
 192     }
 193   }
 194   assert(number_of_entries() == 0, "should have removed all entries");
 195   assert(new_entry_free_list() == NULL, "entry present on PackageEntryTable's free list");
 196   free_buckets();
 197 }
 198 
 199 PackageEntry* PackageEntryTable::new_entry(unsigned int hash, Symbol* name, ModuleEntry* module) {
 200   assert(Module_lock->owned_by_self(), "should have the Module_lock");
 201   PackageEntry* entry = (PackageEntry*) NEW_C_HEAP_ARRAY(char, entry_size(), mtModule);
 202 
 203   // Initialize everything BasicHashtable would
 204   entry->set_next(NULL);
 205   entry->set_hash(hash);
 206   entry->set_literal(name);
 207 
 208   TRACE_INIT_ID(entry);
 209 
 210   // Initialize fields specific to a PackageEntry
 211   entry->init();
 212   entry->name()->increment_refcount();
 213   entry->set_module(module);
 214   return entry;
 215 }
 216 
 217 void PackageEntryTable::add_entry(int index, PackageEntry* new_entry) {
 218   assert(Module_lock->owned_by_self(), "should have the Module_lock");
 219   Hashtable<Symbol*, mtModule>::add_entry(index, (HashtableEntry<Symbol*, mtModule>*)new_entry);
 220 }
 221 
 222 // Create package in loader's package entry table and return the entry.
 223 // If entry already exists, return null.  Assume Module lock was taken by caller.
 224 PackageEntry* PackageEntryTable::locked_create_entry_or_null(Symbol* name, ModuleEntry* module) {
 225   assert(Module_lock->owned_by_self(), "should have the Module_lock");
 226   // Check if package already exists.  Return NULL if it does.




 181       PackageEntry* to_remove = p;
 182       // read next before freeing.
 183       p = p->next();
 184 
 185       // Clean out the C heap allocated qualified exports list first before freeing the entry
 186       to_remove->delete_qualified_exports();
 187       to_remove->name()->decrement_refcount();
 188 
 189       // Unlink from the Hashtable prior to freeing
 190       unlink_entry(to_remove);
 191       FREE_C_HEAP_ARRAY(char, to_remove);
 192     }
 193   }
 194   assert(number_of_entries() == 0, "should have removed all entries");
 195   assert(new_entry_free_list() == NULL, "entry present on PackageEntryTable's free list");
 196   free_buckets();
 197 }
 198 
 199 PackageEntry* PackageEntryTable::new_entry(unsigned int hash, Symbol* name, ModuleEntry* module) {
 200   assert(Module_lock->owned_by_self(), "should have the Module_lock");
 201   PackageEntry* entry = (PackageEntry*)Hashtable<Symbol*, mtModule>::allocate_new_entry(hash, name);





 202 
 203   TRACE_INIT_ID(entry);
 204 
 205   // Initialize fields specific to a PackageEntry
 206   entry->init();
 207   entry->name()->increment_refcount();
 208   entry->set_module(module);
 209   return entry;
 210 }
 211 
 212 void PackageEntryTable::add_entry(int index, PackageEntry* new_entry) {
 213   assert(Module_lock->owned_by_self(), "should have the Module_lock");
 214   Hashtable<Symbol*, mtModule>::add_entry(index, (HashtableEntry<Symbol*, mtModule>*)new_entry);
 215 }
 216 
 217 // Create package in loader's package entry table and return the entry.
 218 // If entry already exists, return null.  Assume Module lock was taken by caller.
 219 PackageEntry* PackageEntryTable::locked_create_entry_or_null(Symbol* name, ModuleEntry* module) {
 220   assert(Module_lock->owned_by_self(), "should have the Module_lock");
 221   // Check if package already exists.  Return NULL if it does.


< prev index next >