209 void PackageEntryTable::add_entry(int index, PackageEntry* new_entry) { |
209 void PackageEntryTable::add_entry(int index, PackageEntry* new_entry) { |
210 assert(Module_lock->owned_by_self(), "should have the Module_lock"); |
210 assert(Module_lock->owned_by_self(), "should have the Module_lock"); |
211 Hashtable<Symbol*, mtModule>::add_entry(index, (HashtableEntry<Symbol*, mtModule>*)new_entry); |
211 Hashtable<Symbol*, mtModule>::add_entry(index, (HashtableEntry<Symbol*, mtModule>*)new_entry); |
212 } |
212 } |
213 |
213 |
214 // Create package in loader's package entry table and return the entry. |
214 // Create package entry in loader's package entry table. Assume Module lock |
215 // If entry already exists, return null. Assume Module lock was taken by caller. |
215 // was taken by caller. |
216 PackageEntry* PackageEntryTable::locked_create_entry_or_null(Symbol* name, ModuleEntry* module) { |
216 void PackageEntryTable::locked_create_entry(Symbol* name, ModuleEntry* module) { |
217 assert(Module_lock->owned_by_self(), "should have the Module_lock"); |
217 assert(Module_lock->owned_by_self(), "should have the Module_lock"); |
218 // Check if package already exists. Return NULL if it does. |
218 assert(locked_lookup_only(name) == NULL, "Package entry already exists"); |
219 if (locked_lookup_only(name) != NULL) { |
219 PackageEntry* entry = new_entry(compute_hash(name), name, module); |
220 return NULL; |
220 add_entry(index_for(name), entry); |
221 } else { |
221 } |
222 PackageEntry* entry = new_entry(compute_hash(name), name, module); |
222 |
223 add_entry(index_for(name), entry); |
223 // Create package entry in loader's package entry table if it does not already |
224 return entry; |
224 // exist. Assume Module lock was taken by caller. |
|
225 void PackageEntryTable::locked_create_entry_if_not_exist(Symbol* name, ModuleEntry* module) { |
|
226 assert(Module_lock->owned_by_self(), "should have the Module_lock"); |
|
227 // Check if package entry already exists. If not, create it. |
|
228 if (locked_lookup_only(name) == NULL) { |
|
229 locked_create_entry(name, module); |
225 } |
230 } |
226 } |
231 } |
227 |
232 |
228 PackageEntry* PackageEntryTable::lookup(Symbol* name, ModuleEntry* module) { |
233 PackageEntry* PackageEntryTable::lookup(Symbol* name, ModuleEntry* module) { |
229 MutexLocker ml(Module_lock); |
234 MutexLocker ml(Module_lock); |