< prev index next >

src/hotspot/share/gc/parallel/mutableSpace.cpp

Print this page

        

@@ -192,11 +192,11 @@
 HeapWord* MutableSpace::cas_allocate(size_t size) {
   do {
     HeapWord* obj = top();
     if (pointer_delta(end(), obj) >= size) {
       HeapWord* new_top = obj + size;
-      HeapWord* result = Atomic::cmpxchg(new_top, top_addr(), obj);
+      HeapWord* result = Atomic::cmpxchg(top_addr(), obj, new_top);
       // result can be one of two:
       //  the old top value: the exchange succeeded
       //  otherwise: the new value of the top is returned.
       if (result != obj) {
         continue; // another thread beat us to the allocation, try again

@@ -211,11 +211,11 @@
 }
 
 // Try to deallocate previous allocation. Returns true upon success.
 bool MutableSpace::cas_deallocate(HeapWord *obj, size_t size) {
   HeapWord* expected_top = obj + size;
-  return Atomic::cmpxchg(obj, top_addr(), expected_top) == expected_top;
+  return Atomic::cmpxchg(top_addr(), expected_top, obj) == expected_top;
 }
 
 void MutableSpace::oop_iterate(OopIterateClosure* cl) {
   HeapWord* obj_addr = bottom();
   HeapWord* t = top();
< prev index next >