< 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 >