< prev index next >

src/hotspot/share/oops/accessBackend.hpp

Print this page

        

@@ -101,16 +101,16 @@
   template <DecoratorSet decorators, typename T>
   struct AccessFunctionTypes {
     typedef T (*load_at_func_t)(oop base, ptrdiff_t offset);
     typedef void (*store_at_func_t)(oop base, ptrdiff_t offset, T value);
     typedef T (*atomic_cmpxchg_at_func_t)(T new_value, oop base, ptrdiff_t offset, T compare_value);
-    typedef T (*atomic_xchg_at_func_t)(T new_value, oop base, ptrdiff_t offset);
+    typedef T (*atomic_xchg_at_func_t)(oop base, ptrdiff_t offset, T new_value);
 
     typedef T (*load_func_t)(void* addr);
     typedef void (*store_func_t)(void* addr, T value);
     typedef T (*atomic_cmpxchg_func_t)(T new_value, void* addr, T compare_value);
-    typedef T (*atomic_xchg_func_t)(T new_value, void* addr);
+    typedef T (*atomic_xchg_func_t)(void* addr, T new_value);
 
     typedef bool (*arraycopy_func_t)(arrayOop src_obj, size_t src_offset_in_bytes, T* src_raw,
                                      arrayOop dst_obj, size_t dst_offset_in_bytes, T* dst_raw,
                                      size_t length);
     typedef void (*clone_func_t)(oop src, oop dst, size_t size);

@@ -301,11 +301,11 @@
   atomic_cmpxchg_internal(T new_value, void* addr, T compare_value);
 
   template <DecoratorSet ds, typename T>
   static typename EnableIf<
     HasDecorator<ds, MO_SEQ_CST>::value, T>::type
-  atomic_xchg_internal(T new_value, void* addr);
+  atomic_xchg_internal(void* addr, T new_value);
 
   // The following *_locked mechanisms serve the purpose of handling atomic operations
   // that are larger than a machine can handle, and then possibly opt for using
   // a slower path using a mutex to perform the operation.
 

@@ -322,18 +322,18 @@
   atomic_cmpxchg_maybe_locked(T new_value, void* addr, T compare_value);
 
   template <DecoratorSet ds, typename T>
   static inline typename EnableIf<
     !AccessInternal::PossiblyLockedAccess<T>::value, T>::type
-  atomic_xchg_maybe_locked(T new_value, void* addr) {
-    return atomic_xchg_internal<ds>(new_value, addr);
+  atomic_xchg_maybe_locked(void* addr, T new_value) {
+    return atomic_xchg_internal<ds>(addr, new_value);
   }
 
   template <DecoratorSet ds, typename T>
   static typename EnableIf<
     AccessInternal::PossiblyLockedAccess<T>::value, T>::type
-  atomic_xchg_maybe_locked(T new_value, void* addr);
+  atomic_xchg_maybe_locked(void* addr, T new_value);
 
 public:
   template <typename T>
   static inline void store(void* addr, T value) {
     store_internal<decorators>(addr, value);

@@ -348,12 +348,12 @@
   static inline T atomic_cmpxchg(T new_value, void* addr, T compare_value) {
     return atomic_cmpxchg_maybe_locked<decorators>(new_value, addr, compare_value);
   }
 
   template <typename T>
-  static inline T atomic_xchg(T new_value, void* addr) {
-    return atomic_xchg_maybe_locked<decorators>(new_value, addr);
+  static inline T atomic_xchg(void* addr, T new_value) {
+    return atomic_xchg_maybe_locked<decorators>(addr, new_value);
   }
 
   template <typename T>
   static bool arraycopy(arrayOop src_obj, size_t src_offset_in_bytes, T* src_raw,
                         arrayOop dst_obj, size_t dst_offset_in_bytes, T* dst_raw,

@@ -373,13 +373,13 @@
   static T oop_atomic_cmpxchg(T new_value, void* addr, T compare_value);
   template <typename T>
   static T oop_atomic_cmpxchg_at(T new_value, oop base, ptrdiff_t offset, T compare_value);
 
   template <typename T>
-  static T oop_atomic_xchg(T new_value, void* addr);
+  static T oop_atomic_xchg(void* addr, T new_value);
   template <typename T>
-  static T oop_atomic_xchg_at(T new_value, oop base, ptrdiff_t offset);
+  static T oop_atomic_xchg_at(oop base, ptrdiff_t offset, T new_value);
 
   template <typename T>
   static void store_at(oop base, ptrdiff_t offset, T value) {
     store(field_addr(base, offset), value);
   }

@@ -393,12 +393,12 @@
   static T atomic_cmpxchg_at(T new_value, oop base, ptrdiff_t offset, T compare_value) {
     return atomic_cmpxchg(new_value, field_addr(base, offset), compare_value);
   }
 
   template <typename T>
-  static T atomic_xchg_at(T new_value, oop base, ptrdiff_t offset) {
-    return atomic_xchg(new_value, field_addr(base, offset));
+  static T atomic_xchg_at(oop base, ptrdiff_t offset, T new_value) {
+    return atomic_xchg(field_addr(base, offset), new_value);
   }
 
   template <typename T>
   static bool oop_arraycopy(arrayOop src_obj, size_t src_offset_in_bytes, T* src_raw,
                             arrayOop dst_obj, size_t dst_offset_in_bytes, T* dst_raw,

@@ -537,26 +537,26 @@
   template <DecoratorSet decorators, typename T>
   struct RuntimeDispatch<decorators, T, BARRIER_ATOMIC_XCHG>: AllStatic {
     typedef typename AccessFunction<decorators, T, BARRIER_ATOMIC_XCHG>::type func_t;
     static func_t _atomic_xchg_func;
 
-    static T atomic_xchg_init(T new_value, void* addr);
+    static T atomic_xchg_init(void* addr, T new_value);
 
-    static inline T atomic_xchg(T new_value, void* addr) {
-      return _atomic_xchg_func(new_value, addr);
+    static inline T atomic_xchg(void* addr, T new_value) {
+      return _atomic_xchg_func(addr, new_value);
     }
   };
 
   template <DecoratorSet decorators, typename T>
   struct RuntimeDispatch<decorators, T, BARRIER_ATOMIC_XCHG_AT>: AllStatic {
     typedef typename AccessFunction<decorators, T, BARRIER_ATOMIC_XCHG_AT>::type func_t;
     static func_t _atomic_xchg_at_func;
 
-    static T atomic_xchg_at_init(T new_value, oop base, ptrdiff_t offset);
+    static T atomic_xchg_at_init(oop base, ptrdiff_t offset, T new_value);
 
-    static inline T atomic_xchg_at(T new_value, oop base, ptrdiff_t offset) {
-      return _atomic_xchg_at_func(new_value, base, offset);
+    static inline T atomic_xchg_at(oop base, ptrdiff_t offset, T new_value) {
+      return _atomic_xchg_at_func(base, offset, new_value);
     }
   };
 
   template <DecoratorSet decorators, typename T>
   struct RuntimeDispatch<decorators, T, BARRIER_ARRAYCOPY>: AllStatic {

@@ -836,60 +836,60 @@
     }
 
     template <DecoratorSet decorators, typename T>
     inline static typename EnableIf<
       HasDecorator<decorators, AS_RAW>::value && CanHardwireRaw<decorators>::value, T>::type
-    atomic_xchg(T new_value, void* addr) {
+    atomic_xchg(void* addr, T new_value) {
       typedef RawAccessBarrier<decorators & RAW_DECORATOR_MASK> Raw;
       if (HasDecorator<decorators, INTERNAL_VALUE_IS_OOP>::value) {
-        return Raw::oop_atomic_xchg(new_value, addr);
+        return Raw::oop_atomic_xchg(addr, new_value);
       } else {
-        return Raw::atomic_xchg(new_value, addr);
+        return Raw::atomic_xchg(addr, new_value);
       }
     }
 
     template <DecoratorSet decorators, typename T>
     inline static typename EnableIf<
       HasDecorator<decorators, AS_RAW>::value && !CanHardwireRaw<decorators>::value, T>::type
-    atomic_xchg(T new_value, void* addr) {
+    atomic_xchg(void* addr, T new_value) {
       if (UseCompressedOops) {
         const DecoratorSet expanded_decorators = decorators | convert_compressed_oops;
-        return PreRuntimeDispatch::atomic_xchg<expanded_decorators>(new_value, addr);
+        return PreRuntimeDispatch::atomic_xchg<expanded_decorators>(addr, new_value);
       } else {
         const DecoratorSet expanded_decorators = decorators & ~convert_compressed_oops;
-        return PreRuntimeDispatch::atomic_xchg<expanded_decorators>(new_value, addr);
+        return PreRuntimeDispatch::atomic_xchg<expanded_decorators>(addr, new_value);
       }
     }
 
     template <DecoratorSet decorators, typename T>
     inline static typename EnableIf<
       !HasDecorator<decorators, AS_RAW>::value, T>::type
-    atomic_xchg(T new_value, void* addr) {
+    atomic_xchg(void* addr, T new_value) {
       if (is_hardwired_primitive<decorators>()) {
         const DecoratorSet expanded_decorators = decorators | AS_RAW;
-        return PreRuntimeDispatch::atomic_xchg<expanded_decorators>(new_value, addr);
+        return PreRuntimeDispatch::atomic_xchg<expanded_decorators>(addr, new_value);
       } else {
-        return RuntimeDispatch<decorators, T, BARRIER_ATOMIC_XCHG>::atomic_xchg(new_value, addr);
+        return RuntimeDispatch<decorators, T, BARRIER_ATOMIC_XCHG>::atomic_xchg(addr, new_value);
       }
     }
 
     template <DecoratorSet decorators, typename T>
     inline static typename EnableIf<
       HasDecorator<decorators, AS_RAW>::value, T>::type
-    atomic_xchg_at(T new_value, oop base, ptrdiff_t offset) {
-      return atomic_xchg<decorators>(new_value, field_addr(base, offset));
+    atomic_xchg_at(oop base, ptrdiff_t offset, T new_value) {
+      return atomic_xchg<decorators>(field_addr(base, offset), new_value);
     }
 
     template <DecoratorSet decorators, typename T>
     inline static typename EnableIf<
       !HasDecorator<decorators, AS_RAW>::value, T>::type
-    atomic_xchg_at(T new_value, oop base, ptrdiff_t offset) {
+    atomic_xchg_at(oop base, ptrdiff_t offset, T new_value) {
       if (is_hardwired_primitive<decorators>()) {
         const DecoratorSet expanded_decorators = decorators | AS_RAW;
-        return PreRuntimeDispatch::atomic_xchg<expanded_decorators>(new_value, base, offset);
+        return PreRuntimeDispatch::atomic_xchg<expanded_decorators>(base, offset, new_value);
       } else {
-        return RuntimeDispatch<decorators, T, BARRIER_ATOMIC_XCHG_AT>::atomic_xchg_at(new_value, base, offset);
+        return RuntimeDispatch<decorators, T, BARRIER_ATOMIC_XCHG_AT>::atomic_xchg_at(base, offset, new_value);
       }
     }
 
     template <DecoratorSet decorators, typename T>
     inline static typename EnableIf<

@@ -1043,33 +1043,33 @@
     const DecoratorSet expanded_decorators = decorators | INTERNAL_CONVERT_COMPRESSED_OOP;
     return PreRuntimeDispatch::atomic_cmpxchg<expanded_decorators>(new_value, addr, compare_value);
   }
 
   template <DecoratorSet decorators, typename T>
-  inline T atomic_xchg_reduce_types(T new_value, T* addr) {
+  inline T atomic_xchg_reduce_types(T* addr, T new_value) {
     const DecoratorSet expanded_decorators = decorators;
-    return PreRuntimeDispatch::atomic_xchg<expanded_decorators>(new_value, addr);
+    return PreRuntimeDispatch::atomic_xchg<expanded_decorators>(addr, new_value);
   }
 
   template <DecoratorSet decorators>
-  inline oop atomic_xchg_reduce_types(oop new_value, narrowOop* addr) {
+  inline oop atomic_xchg_reduce_types(narrowOop* addr, oop new_value) {
     const DecoratorSet expanded_decorators = decorators | INTERNAL_CONVERT_COMPRESSED_OOP |
                                              INTERNAL_RT_USE_COMPRESSED_OOPS;
-    return PreRuntimeDispatch::atomic_xchg<expanded_decorators>(new_value, addr);
+    return PreRuntimeDispatch::atomic_xchg<expanded_decorators>(addr, new_value);
   }
 
   template <DecoratorSet decorators>
-  inline narrowOop atomic_xchg_reduce_types(narrowOop new_value, narrowOop* addr) {
+  inline narrowOop atomic_xchg_reduce_types(narrowOop* addr, narrowOop new_value) {
     const DecoratorSet expanded_decorators = decorators | INTERNAL_CONVERT_COMPRESSED_OOP |
                                              INTERNAL_RT_USE_COMPRESSED_OOPS;
-    return PreRuntimeDispatch::atomic_xchg<expanded_decorators>(new_value, addr);
+    return PreRuntimeDispatch::atomic_xchg<expanded_decorators>(addr, new_value);
   }
 
   template <DecoratorSet decorators>
-  inline oop atomic_xchg_reduce_types(oop new_value, HeapWord* addr) {
+  inline oop atomic_xchg_reduce_types(HeapWord* addr, oop new_value) {
     const DecoratorSet expanded_decorators = decorators | INTERNAL_CONVERT_COMPRESSED_OOP;
-    return PreRuntimeDispatch::atomic_xchg<expanded_decorators>(new_value, addr);
+    return PreRuntimeDispatch::atomic_xchg<expanded_decorators>(addr, new_value);
   }
 
   template <DecoratorSet decorators, typename T>
   inline T load_reduce_types(T* addr) {
     return PreRuntimeDispatch::load<decorators, T>(addr);

@@ -1222,31 +1222,31 @@
     return PreRuntimeDispatch::atomic_cmpxchg_at<final_decorators>(new_decayed_value, base,
                                                                    offset, compare_decayed_value);
   }
 
   template <DecoratorSet decorators, typename P, typename T>
-  inline T atomic_xchg(T new_value, P* addr) {
+  inline T atomic_xchg(P* addr, T new_value) {
     verify_types<decorators, T>();
     typedef typename Decay<P>::type DecayedP;
     typedef typename Decay<T>::type DecayedT;
     DecayedT new_decayed_value = new_value;
     // atomic_xchg is only available in SEQ_CST flavour.
     const DecoratorSet expanded_decorators = DecoratorFixup<decorators | MO_SEQ_CST>::value;
-    return atomic_xchg_reduce_types<expanded_decorators>(new_decayed_value,
-                                                         const_cast<DecayedP*>(addr));
+    return atomic_xchg_reduce_types<expanded_decorators>(const_cast<DecayedP*>(addr),
+                                                         new_decayed_value);
   }
 
   template <DecoratorSet decorators, typename T>
-  inline T atomic_xchg_at(T new_value, oop base, ptrdiff_t offset) {
+  inline T atomic_xchg_at(oop base, ptrdiff_t offset, T new_value) {
     verify_types<decorators, T>();
     typedef typename Decay<T>::type DecayedT;
     DecayedT new_decayed_value = new_value;
     // atomic_xchg is only available in SEQ_CST flavour.
     const DecoratorSet expanded_decorators = DecoratorFixup<decorators | MO_SEQ_CST |
                                              (HasDecorator<decorators, INTERNAL_VALUE_IS_OOP>::value ?
                                               INTERNAL_CONVERT_COMPRESSED_OOP : DECORATORS_NONE)>::value;
-    return PreRuntimeDispatch::atomic_xchg_at<expanded_decorators>(new_decayed_value, base, offset);
+    return PreRuntimeDispatch::atomic_xchg_at<expanded_decorators>(base, offset, new_decayed_value);
   }
 
   template <DecoratorSet decorators, typename T>
   inline bool arraycopy(arrayOop src_obj, size_t src_offset_in_bytes, const T* src_raw,
                         arrayOop dst_obj, size_t dst_offset_in_bytes, T* dst_raw,
< prev index next >