< prev index next >
src/hotspot/share/gc/shenandoah/shenandoahForwarding.inline.hpp
Print this page
*** 53,70 ****
}
inline oop ShenandoahForwarding::try_update_forwardee(oop obj, oop update) {
markWord old_mark = obj->mark_raw();
if (MarkWord::is_marked(old_mark)) {
! return (oop) MarkWord::clear_lock_bits(old_mark);
}
markWord new_mark = MarkWord::encode_pointer_as_mark(update);
markWord prev_mark = obj->cas_set_mark_raw(new_mark, old_mark);
if (prev_mark == old_mark) {
return update;
} else {
! return (oop) MarkWord::clear_lock_bits(prev_mark);
}
}
#endif // SHARE_GC_SHENANDOAH_SHENANDOAHFORWARDING_INLINE_HPP
--- 53,70 ----
}
inline oop ShenandoahForwarding::try_update_forwardee(oop obj, oop update) {
markWord old_mark = obj->mark_raw();
if (MarkWord::is_marked(old_mark)) {
! return oop(reinterpret_cast<oopDesc*>(MarkWord::clear_lock_bits(old_mark)));
}
markWord new_mark = MarkWord::encode_pointer_as_mark(update);
markWord prev_mark = obj->cas_set_mark_raw(new_mark, old_mark);
if (prev_mark == old_mark) {
return update;
} else {
! return oop(reinterpret_cast<oopDesc*>(MarkWord::clear_lock_bits(prev_mark)));
}
}
#endif // SHARE_GC_SHENANDOAH_SHENANDOAHFORWARDING_INLINE_HPP
< prev index next >