< prev index next >

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

Print this page
rev 56771 : 8233339: Shenandoah: Centralize load barrier decisions into ShenandoahBarrierSet


  40   };
  41 private:
  42 
  43   ShenandoahHeap* _heap;
  44   BufferNode::Allocator _satb_mark_queue_buffer_allocator;
  45   ShenandoahSATBMarkQueueSet _satb_mark_queue_set;
  46 
  47 public:
  48   ShenandoahBarrierSet(ShenandoahHeap* heap);
  49 
  50   static ShenandoahBarrierSetAssembler* assembler();
  51 
  52   inline static ShenandoahBarrierSet* barrier_set() {
  53     return barrier_set_cast<ShenandoahBarrierSet>(BarrierSet::barrier_set());
  54   }
  55 
  56   static ShenandoahSATBMarkQueueSet& satb_mark_queue_set() {
  57     return barrier_set()->_satb_mark_queue_set;
  58   }
  59 




  60   void print_on(outputStream* st) const;
  61 
  62   bool is_a(BarrierSet::Name bsn);
  63 
  64   bool is_aligned(HeapWord* hw);
  65 
  66   template <class T> void
  67   write_ref_array_pre_work(T* src, T* dst, size_t count, bool dest_uninitialized);
  68 
  69   inline void arraycopy_pre(oop* src, oop* dst, size_t count);
  70   inline void arraycopy_pre(narrowOop* src, narrowOop* dst, size_t count);
  71   inline void arraycopy_update(oop* src, size_t count);
  72   inline void arraycopy_update(narrowOop* src, size_t count);
  73   inline void clone_barrier(oop src);
  74   void clone_barrier_runtime(oop src);
  75 
  76   // We export this to make it available in cases where the static
  77   // type of the barrier set is known.  Note that it is non-virtual.
  78   template <class T> inline void inline_write_ref_field_pre(T* field, oop new_val);
  79 




  40   };
  41 private:
  42 
  43   ShenandoahHeap* _heap;
  44   BufferNode::Allocator _satb_mark_queue_buffer_allocator;
  45   ShenandoahSATBMarkQueueSet _satb_mark_queue_set;
  46 
  47 public:
  48   ShenandoahBarrierSet(ShenandoahHeap* heap);
  49 
  50   static ShenandoahBarrierSetAssembler* assembler();
  51 
  52   inline static ShenandoahBarrierSet* barrier_set() {
  53     return barrier_set_cast<ShenandoahBarrierSet>(BarrierSet::barrier_set());
  54   }
  55 
  56   static ShenandoahSATBMarkQueueSet& satb_mark_queue_set() {
  57     return barrier_set()->_satb_mark_queue_set;
  58   }
  59 
  60   static bool need_load_reference_barrier(DecoratorSet decorators, BasicType type);
  61   static bool use_native_load_reference_barrier(DecoratorSet decorators, BasicType type);
  62   static bool need_keep_alive_barrier(DecoratorSet decorators, BasicType type);
  63 
  64   void print_on(outputStream* st) const;
  65 
  66   bool is_a(BarrierSet::Name bsn);
  67 
  68   bool is_aligned(HeapWord* hw);
  69 
  70   template <class T> void
  71   write_ref_array_pre_work(T* src, T* dst, size_t count, bool dest_uninitialized);
  72 
  73   inline void arraycopy_pre(oop* src, oop* dst, size_t count);
  74   inline void arraycopy_pre(narrowOop* src, narrowOop* dst, size_t count);
  75   inline void arraycopy_update(oop* src, size_t count);
  76   inline void arraycopy_update(narrowOop* src, size_t count);
  77   inline void clone_barrier(oop src);
  78   void clone_barrier_runtime(oop src);
  79 
  80   // We export this to make it available in cases where the static
  81   // type of the barrier set is known.  Note that it is non-virtual.
  82   template <class T> inline void inline_write_ref_field_pre(T* field, oop new_val);
  83 


< prev index next >