src/hotspot/share/oops/accessBackend.hpp
changeset 49383 bf2ff45e592f
parent 49364 601146c66cad
child 49454 689ebcfe04fd
equal deleted inserted replaced
49382:3875d7b926a8 49383:bf2ff45e592f
   102     typedef bool (*arraycopy_func_t)(arrayOop src_obj, arrayOop dst_obj, T* src, T* dst, size_t length);
   102     typedef bool (*arraycopy_func_t)(arrayOop src_obj, arrayOop dst_obj, T* src, T* dst, size_t length);
   103     typedef void (*clone_func_t)(oop src, oop dst, size_t size);
   103     typedef void (*clone_func_t)(oop src, oop dst, size_t size);
   104     typedef oop (*resolve_func_t)(oop obj);
   104     typedef oop (*resolve_func_t)(oop obj);
   105   };
   105   };
   106 
   106 
       
   107   template <DecoratorSet decorators>
       
   108   struct AccessFunctionTypes<decorators, void> {
       
   109     typedef bool (*arraycopy_func_t)(arrayOop src_obj, arrayOop dst_obj, void* src, void* dst, size_t length);
       
   110   };
       
   111 
   107   template <DecoratorSet decorators, typename T, BarrierType barrier> struct AccessFunction {};
   112   template <DecoratorSet decorators, typename T, BarrierType barrier> struct AccessFunction {};
   108 
   113 
   109 #define ACCESS_GENERATE_ACCESS_FUNCTION(bt, func)                   \
   114 #define ACCESS_GENERATE_ACCESS_FUNCTION(bt, func)                   \
   110   template <DecoratorSet decorators, typename T>                    \
   115   template <DecoratorSet decorators, typename T>                    \
   111   struct AccessFunction<decorators, T, bt>: AllStatic{              \
   116   struct AccessFunction<decorators, T, bt>: AllStatic{              \
   333   static inline T atomic_xchg(T new_value, void* addr) {
   338   static inline T atomic_xchg(T new_value, void* addr) {
   334     return atomic_xchg_maybe_locked<decorators>(new_value, addr);
   339     return atomic_xchg_maybe_locked<decorators>(new_value, addr);
   335   }
   340   }
   336 
   341 
   337   template <typename T>
   342   template <typename T>
   338   static bool arraycopy(T* src, T* dst, size_t length);
   343   static bool arraycopy(arrayOop src_obj, arrayOop dst_obj, T* src, T* dst, size_t length);
   339 
   344 
   340   template <typename T>
   345   template <typename T>
   341   static void oop_store(void* addr, T value);
   346   static void oop_store(void* addr, T value);
   342   template <typename T>
   347   template <typename T>
   343   static void oop_store_at(oop base, ptrdiff_t offset, T value);
   348   static void oop_store_at(oop base, ptrdiff_t offset, T value);