8186166: Generalize Atomic::cmpxchg with templates

Reviewed-by: dholmes, coleenp
This commit is contained in:
Kim Barrett 2017-08-23 14:01:17 +02:00 committed by Erik Österlund
parent 61a9f88ca7
commit e54adefc2f
31 changed files with 1046 additions and 518 deletions

View file

@ -94,7 +94,7 @@ void oopDesc::release_set_mark(markOop m) {
}
markOop oopDesc::cas_set_mark(markOop new_mark, markOop old_mark) {
return (markOop) Atomic::cmpxchg_ptr(new_mark, &_mark, old_mark);
return Atomic::cmpxchg(new_mark, &_mark, old_mark);
}
void oopDesc::init_mark() {
@ -408,14 +408,14 @@ oop oopDesc::atomic_compare_exchange_oop(oop exchange_value,
narrowOop val = encode_heap_oop(exchange_value);
narrowOop cmp = encode_heap_oop(compare_value);
narrowOop old = (narrowOop) Atomic::cmpxchg(val, (narrowOop*)dest, cmp);
narrowOop old = Atomic::cmpxchg(val, (narrowOop*)dest, cmp);
// decode old from T to oop
return decode_heap_oop(old);
} else {
if (prebarrier) {
update_barrier_set_pre((oop*)dest, exchange_value);
}
return (oop)Atomic::cmpxchg_ptr(exchange_value, (oop*)dest, compare_value);
return Atomic::cmpxchg(exchange_value, (oop*)dest, compare_value);
}
}
@ -619,7 +619,7 @@ oop oopDesc::forward_to_atomic(oop p) {
assert(sizeof(markOop) == sizeof(intptr_t), "CAS below requires this.");
while (!oldMark->is_marked()) {
curMark = (markOop)Atomic::cmpxchg_ptr(forwardPtrMark, &_mark, oldMark);
curMark = Atomic::cmpxchg(forwardPtrMark, &_mark, oldMark);
assert(is_forwarded(), "object should have been forwarded");
if (curMark == oldMark) {
return NULL;