< prev index next >

src/share/vm/oops/oop.hpp

Print this page

        

@@ -28,10 +28,11 @@
 #include "gc/shared/specialized_oop_closures.hpp"
 #include "memory/iterator.hpp"
 #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++.
 // oopDesc is abstract.
 // (see oopHierarchy for complete oop class hierarchy)

@@ -73,11 +74,11 @@
   markOop* mark_addr() const { return (markOop*) &_mark; }
 
   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
   inline void init_mark();
 

@@ -296,11 +297,11 @@
 
   // Forward pointer operations for scavenge
   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.
   // Exactly one thread succeeds in inserting the forwarding pointer, and
   // this call returns "NULL" for that thread; any other thread has the
< prev index next >