hotspot/src/share/vm/classfile/classLoaderData.cpp
changeset 37415 35df58edb348
parent 37248 11a660dbbb8e
child 38014 8731fa11f766
equal deleted inserted replaced
37412:d5f8d53af5ec 37415:35df58edb348
   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() {