< prev index next >

src/hotspot/share/gc/g1/g1CodeCacheRemSet.cpp

Print this page
rev 47400 : [mq]: cmpxchg_ptr
rev 47404 : [mq]: load_ptr_acquire
rev 47406 : [mq]: assembler_cmpxchg

*** 153,175 **** G1CodeRootSet::~G1CodeRootSet() { delete _table; } G1CodeRootSetTable* G1CodeRootSet::load_acquire_table() { ! return (G1CodeRootSetTable*) OrderAccess::load_ptr_acquire(&_table); } void G1CodeRootSet::allocate_small_table() { G1CodeRootSetTable* temp = new G1CodeRootSetTable(SmallSize); ! OrderAccess::release_store_ptr(&_table, temp); } void G1CodeRootSetTable::purge_list_append(G1CodeRootSetTable* table) { for (;;) { table->_purge_next = _purge_list; ! G1CodeRootSetTable* old = (G1CodeRootSetTable*) Atomic::cmpxchg_ptr(table, &_purge_list, table->_purge_next); if (old == table->_purge_next) { break; } } } --- 153,175 ---- G1CodeRootSet::~G1CodeRootSet() { delete _table; } G1CodeRootSetTable* G1CodeRootSet::load_acquire_table() { ! return OrderAccess::load_acquire(&_table); } void G1CodeRootSet::allocate_small_table() { G1CodeRootSetTable* temp = new G1CodeRootSetTable(SmallSize); ! OrderAccess::release_store(&_table, temp); } void G1CodeRootSetTable::purge_list_append(G1CodeRootSetTable* table) { for (;;) { table->_purge_next = _purge_list; ! G1CodeRootSetTable* old = Atomic::cmpxchg(table, &_purge_list, table->_purge_next); if (old == table->_purge_next) { break; } } }
*** 189,199 **** _table->copy_to(temp); G1CodeRootSetTable::purge_list_append(_table); ! OrderAccess::release_store_ptr(&_table, temp); } void G1CodeRootSet::purge() { G1CodeRootSetTable::purge(); } --- 189,199 ---- _table->copy_to(temp); G1CodeRootSetTable::purge_list_append(_table); ! OrderAccess::release_store(&_table, temp); } void G1CodeRootSet::purge() { G1CodeRootSetTable::purge(); }
< prev index next >