< 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 >