< prev index next >
src/hotspot/share/gc/shenandoah/shenandoahForwarding.inline.hpp
Print this page
rev 59888 : imported patch evac-locking.patch
*** 72,92 ****
inline bool ShenandoahForwarding::is_forwarded(oop obj) {
return obj->mark_raw().is_marked();
}
! inline oop ShenandoahForwarding::try_update_forwardee(oop obj, oop update) {
markWord old_mark = obj->mark_raw();
- if (old_mark.is_marked()) {
- return oop(old_mark.clear_lock_bits().to_pointer());
- }
-
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(prev_mark.clear_lock_bits().to_pointer());
! }
}
#endif // SHARE_GC_SHENANDOAH_SHENANDOAHFORWARDING_INLINE_HPP
--- 72,83 ----
inline bool ShenandoahForwarding::is_forwarded(oop obj) {
return obj->mark_raw().is_marked();
}
! inline void ShenandoahForwarding::update_forwardee(oop obj, oop update) {
markWord old_mark = obj->mark_raw();
markWord new_mark = markWord::encode_pointer_as_mark(update);
! obj->set_mark_raw(new_mark);
}
#endif // SHARE_GC_SHENANDOAH_SHENANDOAHFORWARDING_INLINE_HPP
< prev index next >