< prev index next >

src/hotspot/share/gc/z/zBarrierSet.hpp

Print this page




  53     template <DecoratorSet expected>
  54     static void verify_decorators_absent();
  55 
  56     static oop* field_addr(oop base, ptrdiff_t offset);
  57 
  58     template <typename T>
  59     static oop load_barrier_on_oop_field_preloaded(T* addr, oop o);
  60 
  61     template <typename T>
  62     static oop load_barrier_on_unknown_oop_field_preloaded(oop base, ptrdiff_t offset, T* addr, oop o);
  63 
  64   public:
  65     //
  66     // In heap
  67     //
  68     template <typename T>
  69     static oop oop_load_in_heap(T* addr);
  70     static oop oop_load_in_heap_at(oop base, ptrdiff_t offset);
  71 
  72     template <typename T>
  73     static oop oop_atomic_cmpxchg_in_heap(oop new_value, T* addr, oop compare_value);
  74     static oop oop_atomic_cmpxchg_in_heap_at(oop new_value, oop base, ptrdiff_t offset, oop compare_value);
  75 
  76     template <typename T>
  77     static oop oop_atomic_xchg_in_heap(T* addr, oop new_value);
  78     static oop oop_atomic_xchg_in_heap_at(oop base, ptrdiff_t offset, oop new_value);
  79 
  80     template <typename T>
  81     static bool oop_arraycopy_in_heap(arrayOop src_obj, size_t src_offset_in_bytes, T* src_raw,
  82                                       arrayOop dst_obj, size_t dst_offset_in_bytes, T* dst_raw,
  83                                       size_t length);
  84 
  85     static void clone_in_heap(oop src, oop dst, size_t size);
  86 
  87     //
  88     // Not in heap
  89     //
  90     template <typename T>
  91     static oop oop_load_not_in_heap(T* addr);
  92 
  93     template <typename T>
  94     static oop oop_atomic_cmpxchg_not_in_heap(oop new_value, T* addr, oop compare_value);
  95 
  96     template <typename T>
  97     static oop oop_atomic_xchg_not_in_heap(T* addr, oop new_value);
  98   };
  99 };
 100 
 101 template<> struct BarrierSet::GetName<ZBarrierSet> {
 102   static const BarrierSet::Name value = BarrierSet::ZBarrierSet;
 103 };
 104 
 105 template<> struct BarrierSet::GetType<BarrierSet::ZBarrierSet> {
 106   typedef ::ZBarrierSet type;
 107 };
 108 
 109 #endif // SHARE_GC_Z_ZBARRIERSET_HPP


  53     template <DecoratorSet expected>
  54     static void verify_decorators_absent();
  55 
  56     static oop* field_addr(oop base, ptrdiff_t offset);
  57 
  58     template <typename T>
  59     static oop load_barrier_on_oop_field_preloaded(T* addr, oop o);
  60 
  61     template <typename T>
  62     static oop load_barrier_on_unknown_oop_field_preloaded(oop base, ptrdiff_t offset, T* addr, oop o);
  63 
  64   public:
  65     //
  66     // In heap
  67     //
  68     template <typename T>
  69     static oop oop_load_in_heap(T* addr);
  70     static oop oop_load_in_heap_at(oop base, ptrdiff_t offset);
  71 
  72     template <typename T>
  73     static oop oop_atomic_cmpxchg_in_heap(T* addr, oop compare_value, oop new_value);
  74     static oop oop_atomic_cmpxchg_in_heap_at(oop base, ptrdiff_t offset, oop compare_value, oop new_value);
  75 
  76     template <typename T>
  77     static oop oop_atomic_xchg_in_heap(T* addr, oop new_value);
  78     static oop oop_atomic_xchg_in_heap_at(oop base, ptrdiff_t offset, oop new_value);
  79 
  80     template <typename T>
  81     static bool oop_arraycopy_in_heap(arrayOop src_obj, size_t src_offset_in_bytes, T* src_raw,
  82                                       arrayOop dst_obj, size_t dst_offset_in_bytes, T* dst_raw,
  83                                       size_t length);
  84 
  85     static void clone_in_heap(oop src, oop dst, size_t size);
  86 
  87     //
  88     // Not in heap
  89     //
  90     template <typename T>
  91     static oop oop_load_not_in_heap(T* addr);
  92 
  93     template <typename T>
  94     static oop oop_atomic_cmpxchg_not_in_heap(T* addr, oop compare_value, oop new_value);
  95 
  96     template <typename T>
  97     static oop oop_atomic_xchg_not_in_heap(T* addr, oop new_value);
  98   };
  99 };
 100 
 101 template<> struct BarrierSet::GetName<ZBarrierSet> {
 102   static const BarrierSet::Name value = BarrierSet::ZBarrierSet;
 103 };
 104 
 105 template<> struct BarrierSet::GetType<BarrierSet::ZBarrierSet> {
 106   typedef ::ZBarrierSet type;
 107 };
 108 
 109 #endif // SHARE_GC_Z_ZBARRIERSET_HPP
< prev index next >