< prev index next >

src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.hpp

Print this page
rev 58687 : Shenandoah: New incremental-update mode


  90   template <DecoratorSet decorators>
  91   inline void keep_alive_if_weak(oop value);
  92   inline void keep_alive_if_weak(DecoratorSet decorators, oop value);
  93 
  94   inline void enqueue(oop obj);
  95 
  96   oop load_reference_barrier(oop obj);
  97   oop load_reference_barrier_not_null(oop obj);
  98 
  99   oop load_reference_barrier_mutator(oop obj, oop* load_addr);
 100   oop load_reference_barrier_mutator(oop obj, narrowOop* load_addr);
 101 
 102   template <class T>
 103   oop load_reference_barrier_mutator_work(oop obj, T* load_addr);
 104 
 105   oop load_reference_barrier_native(oop obj, oop* load_addr);
 106   oop load_reference_barrier_native(oop obj, narrowOop* load_addr);
 107 
 108 private:
 109   template <class T>
 110   inline void arraycopy_marking(T* ary, size_t count);
 111   template <class T>
 112   inline void arraycopy_evacuation(T* src, size_t count);
 113   template <class T>
 114   inline void arraycopy_update(T* src, size_t count);




 115 
 116   template <class T, bool HAS_FWD, bool EVAC, bool ENQUEUE>
 117   inline void arraycopy_work(T* src, size_t count);
 118 
 119   oop load_reference_barrier_impl(oop obj);
 120 
 121   template <class T>
 122   oop load_reference_barrier_native_impl(oop obj, T* load_addr);
 123 
 124   inline bool need_bulk_update(HeapWord* dst);
 125 public:
 126   // Callbacks for runtime accesses.
 127   template <DecoratorSet decorators, typename BarrierSetT = ShenandoahBarrierSet>
 128   class AccessBarrier: public BarrierSet::AccessBarrier<decorators, BarrierSetT> {
 129     typedef BarrierSet::AccessBarrier<decorators, BarrierSetT> Raw;
 130 
 131   public:
 132     // Heap oop accesses. These accessors get resolved when
 133     // IN_HEAP is set (e.g. when using the HeapAccess API), it is
 134     // an oop_* overload, and the barrier strength is AS_NORMAL.




  90   template <DecoratorSet decorators>
  91   inline void keep_alive_if_weak(oop value);
  92   inline void keep_alive_if_weak(DecoratorSet decorators, oop value);
  93 
  94   inline void enqueue(oop obj);
  95 
  96   oop load_reference_barrier(oop obj);
  97   oop load_reference_barrier_not_null(oop obj);
  98 
  99   oop load_reference_barrier_mutator(oop obj, oop* load_addr);
 100   oop load_reference_barrier_mutator(oop obj, narrowOop* load_addr);
 101 
 102   template <class T>
 103   oop load_reference_barrier_mutator_work(oop obj, T* load_addr);
 104 
 105   oop load_reference_barrier_native(oop obj, oop* load_addr);
 106   oop load_reference_barrier_native(oop obj, narrowOop* load_addr);
 107 
 108 private:
 109   template <class T>
 110   inline void arraycopy_marking(T* src, T* dst, size_t count);
 111   template <class T>
 112   inline void arraycopy_evacuation(T* src, size_t count);
 113   template <class T>
 114   inline void arraycopy_update(T* src, size_t count);
 115 
 116   inline void clone_marking(oop src);
 117   inline void clone_evacuation(oop src);
 118   inline void clone_update(oop src);
 119 
 120   template <class T, bool HAS_FWD, bool EVAC, bool ENQUEUE>
 121   inline void arraycopy_work(T* src, size_t count);
 122 
 123   oop load_reference_barrier_impl(oop obj);
 124 
 125   template <class T>
 126   oop load_reference_barrier_native_impl(oop obj, T* load_addr);
 127 
 128   inline bool need_bulk_update(HeapWord* dst);
 129 public:
 130   // Callbacks for runtime accesses.
 131   template <DecoratorSet decorators, typename BarrierSetT = ShenandoahBarrierSet>
 132   class AccessBarrier: public BarrierSet::AccessBarrier<decorators, BarrierSetT> {
 133     typedef BarrierSet::AccessBarrier<decorators, BarrierSetT> Raw;
 134 
 135   public:
 136     // Heap oop accesses. These accessors get resolved when
 137     // IN_HEAP is set (e.g. when using the HeapAccess API), it is
 138     // an oop_* overload, and the barrier strength is AS_NORMAL.


< prev index next >