--- old/src/share/vm/oops/oop.hpp 2016-10-05 00:16:13.000000000 +0900 +++ new/src/share/vm/oops/oop.hpp 2016-10-05 00:16:13.000000000 +0900 @@ -30,6 +30,7 @@ #include "memory/memRegion.hpp" #include "oops/metadata.hpp" #include "utilities/macros.hpp" +#include "runtime/atomic.hpp" // oopDesc is the top baseclass for objects classes. The {name}Desc classes describe // the format of Java objects so the fields can be accessed from C++. @@ -75,7 +76,7 @@ void set_mark(volatile markOop m) { _mark = m; } inline void release_set_mark(markOop m); - inline markOop cas_set_mark(markOop new_mark, markOop old_mark); + inline markOop cas_set_mark(markOop new_mark, markOop old_mark, cmpxchg_memory_order order = memory_order_conservative); // Used only to re-initialize the mark word (e.g., of promoted // objects during a GC) -- requires a valid klass pointer @@ -298,7 +299,7 @@ inline bool is_forwarded() const; inline void forward_to(oop p); - inline bool cas_forward_to(oop p, markOop compare); + inline bool cas_forward_to(oop p, markOop compare, cmpxchg_memory_order order = memory_order_conservative); #if INCLUDE_ALL_GCS // Like "forward_to", but inserts the forwarding pointer atomically.