< prev index next >

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

Print this page
*** 24,30 ***
  
  #ifndef SHARE_GC_SHENANDOAH_SHENANDOAHBARRIERSET_HPP
  #define SHARE_GC_SHENANDOAH_SHENANDOAHBARRIERSET_HPP
  
  #include "gc/shared/barrierSet.hpp"
  #include "gc/shenandoah/shenandoahSATBMarkQueueSet.hpp"
  
  class ShenandoahHeap;
  class ShenandoahBarrierSetAssembler;
  
  class ShenandoahBarrierSet: public BarrierSet {
  private:
    ShenandoahHeap* const _heap;
    BufferNode::Allocator _satb_mark_queue_buffer_allocator;
    ShenandoahSATBMarkQueueSet _satb_mark_queue_set;
  
  public:
!   ShenandoahBarrierSet(ShenandoahHeap* heap);
  
    static ShenandoahBarrierSetAssembler* assembler();
  
    inline static ShenandoahBarrierSet* barrier_set() {
      return barrier_set_cast<ShenandoahBarrierSet>(BarrierSet::barrier_set());
    }
  
    static ShenandoahSATBMarkQueueSet& satb_mark_queue_set() {
      return barrier_set()->_satb_mark_queue_set;
    }
  
    static bool need_load_reference_barrier(DecoratorSet decorators, BasicType type);
--- 24,34 ---
  
  #ifndef SHARE_GC_SHENANDOAH_SHENANDOAHBARRIERSET_HPP
  #define SHARE_GC_SHENANDOAH_SHENANDOAHBARRIERSET_HPP
  
  #include "gc/shared/barrierSet.hpp"
+ #include "gc/shenandoah/shenandoahCardTable.hpp"
  #include "gc/shenandoah/shenandoahSATBMarkQueueSet.hpp"
  
  class ShenandoahHeap;
  class ShenandoahBarrierSetAssembler;
  
  class ShenandoahBarrierSet: public BarrierSet {
  private:
    ShenandoahHeap* const _heap;
+   ShenandoahCardTable* _card_table;
    BufferNode::Allocator _satb_mark_queue_buffer_allocator;
    ShenandoahSATBMarkQueueSet _satb_mark_queue_set;
  
  public:
!   ShenandoahBarrierSet(ShenandoahHeap* heap, MemRegion heap_region);
  
    static ShenandoahBarrierSetAssembler* assembler();
  
    inline static ShenandoahBarrierSet* barrier_set() {
      return barrier_set_cast<ShenandoahBarrierSet>(BarrierSet::barrier_set());
    }
  
+   inline ShenandoahCardTable* card_table()  { return _card_table; }
+ 
    static ShenandoahSATBMarkQueueSet& satb_mark_queue_set() {
      return barrier_set()->_satb_mark_queue_set;
    }
  
    static bool need_load_reference_barrier(DecoratorSet decorators, BasicType type);

*** 109,10 ***
--- 113,15 ---
    inline oop oop_cmpxchg(DecoratorSet decorators, T* addr, oop compare_value, oop new_value);
  
    template <typename T>
    inline oop oop_xchg(DecoratorSet decorators, T* addr, oop new_value);
  
+   template <DecoratorSet decorators, typename T>
+   void write_ref_field_post(T* field, oop newVal);
+ 
+   void write_ref_array(HeapWord* start, size_t count);
+ 
  private:
    template <class T>
    inline void arraycopy_marking(T* src, T* dst, size_t count);
    template <class T>
    inline void arraycopy_evacuation(T* src, size_t count);
< prev index next >