--- old/src/share/vm/oops/oop.inline.hpp 2016-10-04 18:59:01.000000000 +0900 +++ new/src/share/vm/oops/oop.inline.hpp 2016-10-04 18:59:01.000000000 +0900 @@ -92,8 +92,8 @@ OrderAccess::release_store_ptr(&_mark, m); } -markOop oopDesc::cas_set_mark(markOop new_mark, markOop old_mark) { - return (markOop) Atomic::cmpxchg_ptr(new_mark, &_mark, old_mark); +markOop oopDesc::cas_set_mark(markOop new_mark, markOop old_mark, cmpxchg_memory_order order) { + return (markOop) Atomic::cmpxchg_ptr(new_mark, &_mark, old_mark, order); } void oopDesc::init_mark() { @@ -578,14 +578,14 @@ } // Used by parallel scavengers -bool oopDesc::cas_forward_to(oop p, markOop compare) { +bool oopDesc::cas_forward_to(oop p, markOop compare, cmpxchg_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(m, compare) == compare; + return cas_set_mark(m, compare, order) == compare; } #if INCLUDE_ALL_GCS