< prev index next >

src/hotspot/share/utilities/hashtable.inline.hpp

Print this page

        

*** 76,95 **** template <MEMFLAGS F> inline void HashtableBucket<F>::set_entry(BasicHashtableEntry<F>* l) { // Warning: Preserve store ordering. The PackageEntryTable, ModuleEntryTable and // SystemDictionary are read without locks. The new entry must be // complete before other threads can be allowed to see it // via a store to _buckets[index]. ! OrderAccess::release_store_ptr(&_entry, l); } template <MEMFLAGS F> inline BasicHashtableEntry<F>* HashtableBucket<F>::get_entry() const { // Warning: Preserve load ordering. The PackageEntryTable, ModuleEntryTable and // SystemDictionary are read without locks. The new entry must be // complete before other threads can be allowed to see it // via a store to _buckets[index]. ! return (BasicHashtableEntry<F>*) OrderAccess::load_ptr_acquire(&_entry); } template <MEMFLAGS F> inline void BasicHashtable<F>::set_entry(int index, BasicHashtableEntry<F>* entry) { _buckets[index].set_entry(entry); --- 76,95 ---- template <MEMFLAGS F> inline void HashtableBucket<F>::set_entry(BasicHashtableEntry<F>* l) { // Warning: Preserve store ordering. The PackageEntryTable, ModuleEntryTable and // SystemDictionary are read without locks. The new entry must be // complete before other threads can be allowed to see it // via a store to _buckets[index]. ! OrderAccess::release_store(&_entry, l); } template <MEMFLAGS F> inline BasicHashtableEntry<F>* HashtableBucket<F>::get_entry() const { // Warning: Preserve load ordering. The PackageEntryTable, ModuleEntryTable and // SystemDictionary are read without locks. The new entry must be // complete before other threads can be allowed to see it // via a store to _buckets[index]. ! return OrderAccess::load_acquire(&_entry); } template <MEMFLAGS F> inline void BasicHashtable<F>::set_entry(int index, BasicHashtableEntry<F>* entry) { _buckets[index].set_entry(entry);
< prev index next >