--- old/src/hotspot/share/oops/oop.inline.hpp 2018-05-18 14:29:47.587225345 +0900 +++ new/src/hotspot/share/oops/oop.inline.hpp 2018-05-18 14:29:47.331219201 +0900 @@ -71,8 +71,8 @@ return HeapAccess<>::atomic_cmpxchg_at(new_mark, as_oop(), mark_offset_in_bytes(), old_mark); } -markOop oopDesc::cas_set_mark_raw(markOop new_mark, markOop old_mark) { - return Atomic::cmpxchg(new_mark, &_mark, old_mark); +markOop oopDesc::cas_set_mark_raw(markOop new_mark, markOop old_mark, atomic_memory_order order) { + return Atomic::cmpxchg(new_mark, &_mark, old_mark, order); } void oopDesc::init_mark() { @@ -339,14 +339,14 @@ } // Used by parallel scavengers -bool oopDesc::cas_forward_to(oop p, markOop compare) { +bool oopDesc::cas_forward_to(oop p, markOop compare, atomic_memory_order order) { assert(check_obj_alignment(p), "forwarding to something not aligned"); assert(Universe::heap()->is_in_reserved(p), "forwarding to something not in heap"); markOop m = markOopDesc::encode_pointer_as_mark(p); assert(m->decode_pointer() == p, "encoding must be reversable"); - return cas_set_mark_raw(m, compare) == compare; + return cas_set_mark_raw(m, compare, order) == compare; } oop oopDesc::forward_to_atomic(oop p) {