equal
deleted
inserted
replaced
371 |
371 |
372 PackageEntryTable* ClassLoaderData::packages() { |
372 PackageEntryTable* ClassLoaderData::packages() { |
373 // Lazily create the package entry table at first request. |
373 // Lazily create the package entry table at first request. |
374 if (_packages == NULL) { |
374 if (_packages == NULL) { |
375 MutexLockerEx m1(metaspace_lock(), Mutex::_no_safepoint_check_flag); |
375 MutexLockerEx m1(metaspace_lock(), Mutex::_no_safepoint_check_flag); |
376 // Check again if _packages has been allocated while we were getting this lock. |
376 // Check if _packages got allocated while we were waiting for this lock. |
377 if (_packages != NULL) { |
377 if (_packages == NULL) { |
378 return _packages; |
378 _packages = new PackageEntryTable(PackageEntryTable::_packagetable_entry_size); |
379 } |
379 } |
380 // Ensure _packages is stable, since it is examined without a lock |
|
381 OrderAccess::storestore(); |
|
382 _packages = new PackageEntryTable(PackageEntryTable::_packagetable_entry_size); |
|
383 } |
380 } |
384 return _packages; |
381 return _packages; |
385 } |
382 } |
386 |
383 |
387 ModuleEntryTable* ClassLoaderData::modules() { |
384 ModuleEntryTable* ClassLoaderData::modules() { |