< prev index next >
src/hotspot/share/interpreter/oopMapCache.cpp
Print this page
*** 450,460 ****
OopMapCacheEntry* OopMapCache::entry_at(int i) const {
return Atomic::load_acquire(&(_array[i % _size]));
}
bool OopMapCache::put_at(int i, OopMapCacheEntry* entry, OopMapCacheEntry* old) {
! return Atomic::cmpxchg(entry, &_array[i % _size], old) == old;
}
void OopMapCache::flush() {
for (int i = 0; i < _size; i++) {
OopMapCacheEntry* entry = _array[i];
--- 450,460 ----
OopMapCacheEntry* OopMapCache::entry_at(int i) const {
return Atomic::load_acquire(&(_array[i % _size]));
}
bool OopMapCache::put_at(int i, OopMapCacheEntry* entry, OopMapCacheEntry* old) {
! return Atomic::cmpxchg(&_array[i % _size], old, entry) == old;
}
void OopMapCache::flush() {
for (int i = 0; i < _size; i++) {
OopMapCacheEntry* entry = _array[i];
*** 562,572 ****
bool success = false;
OopMapCacheEntry* head;
do {
head = _old_entries;
entry->_next = head;
! success = Atomic::cmpxchg(entry, &_old_entries, head) == head;
} while (!success);
if (log_is_enabled(Debug, interpreter, oopmap)) {
ResourceMark rm;
log_debug(interpreter, oopmap)("enqueue %s at bci %d for cleanup",
--- 562,572 ----
bool success = false;
OopMapCacheEntry* head;
do {
head = _old_entries;
entry->_next = head;
! success = Atomic::cmpxchg(&_old_entries, head, entry) == head;
} while (!success);
if (log_is_enabled(Debug, interpreter, oopmap)) {
ResourceMark rm;
log_debug(interpreter, oopmap)("enqueue %s at bci %d for cleanup",
< prev index next >