< prev index next >
src/hotspot/share/oops/oop.inline.hpp
Print this page
*** 59,69 ****
void oopDesc::set_mark(markWord m) {
HeapAccess<MO_VOLATILE>::store_at(as_oop(), mark_offset_in_bytes(), m.value());
}
void oopDesc::set_mark_raw(markWord m) {
! Atomic::store(m, &_mark);
}
void oopDesc::set_mark_raw(HeapWord* mem, markWord m) {
*(markWord*)(((char*)mem) + mark_offset_in_bytes()) = m;
}
--- 59,69 ----
void oopDesc::set_mark(markWord m) {
HeapAccess<MO_VOLATILE>::store_at(as_oop(), mark_offset_in_bytes(), m.value());
}
void oopDesc::set_mark_raw(markWord m) {
! Atomic::store(&_mark, m);
}
void oopDesc::set_mark_raw(HeapWord* mem, markWord m) {
*(markWord*)(((char*)mem) + mark_offset_in_bytes()) = m;
}
*** 71,86 ****
void oopDesc::release_set_mark(markWord m) {
HeapAccess<MO_RELEASE>::store_at(as_oop(), mark_offset_in_bytes(), m.value());
}
markWord oopDesc::cas_set_mark(markWord new_mark, markWord old_mark) {
! uintptr_t v = HeapAccess<>::atomic_cmpxchg_at(new_mark.value(), as_oop(), mark_offset_in_bytes(), old_mark.value());
return markWord(v);
}
markWord oopDesc::cas_set_mark_raw(markWord new_mark, markWord old_mark, atomic_memory_order order) {
! return Atomic::cmpxchg(new_mark, &_mark, old_mark, order);
}
void oopDesc::init_mark() {
set_mark(markWord::prototype_for_klass(klass()));
}
--- 71,86 ----
void oopDesc::release_set_mark(markWord m) {
HeapAccess<MO_RELEASE>::store_at(as_oop(), mark_offset_in_bytes(), m.value());
}
markWord oopDesc::cas_set_mark(markWord new_mark, markWord old_mark) {
! uintptr_t v = HeapAccess<>::atomic_cmpxchg_at(as_oop(), mark_offset_in_bytes(), old_mark.value(), new_mark.value());
return markWord(v);
}
markWord oopDesc::cas_set_mark_raw(markWord new_mark, markWord old_mark, atomic_memory_order order) {
! return Atomic::cmpxchg(&_mark, old_mark, new_mark, order);
}
void oopDesc::init_mark() {
set_mark(markWord::prototype_for_klass(klass()));
}
< prev index next >