< prev index next >

src/share/vm/gc/g1/g1SATBCardTableModRefBS.hpp

Print this page
rev 14282 : Factor out keep-alive barrier from usual pre-barrier implementations.


  86 
  87   bool is_card_claimed(size_t card_index) {
  88     jbyte val = _byte_map[card_index];
  89     return (val & (clean_card_mask_val() | claimed_card_val())) == claimed_card_val();
  90   }
  91 
  92   inline void set_card_claimed(size_t card_index);
  93 
  94   void verify_g1_young_region(MemRegion mr) PRODUCT_RETURN;
  95   void g1_mark_as_young(const MemRegion& mr);
  96 
  97   bool mark_card_deferred(size_t card_index);
  98 
  99   bool is_card_deferred(size_t card_index) {
 100     jbyte val = _byte_map[card_index];
 101     return (val & (clean_card_mask_val() | deferred_card_val())) == deferred_card_val();
 102   }
 103   virtual void write_ref_nmethod_pre(oop* dst, nmethod* nm);
 104   virtual void write_ref_nmethod_post(oop* dst, nmethod* nm);
 105 



 106 };
 107 
 108 template<>
 109 struct BarrierSet::GetName<G1SATBCardTableModRefBS> {
 110   static const BarrierSet::Name value = BarrierSet::G1SATBCT;
 111 };
 112 
 113 class G1SATBCardTableLoggingModRefBSChangedListener : public G1MappingChangedListener {
 114  private:
 115   G1SATBCardTableLoggingModRefBS* _card_table;
 116  public:
 117   G1SATBCardTableLoggingModRefBSChangedListener() : _card_table(NULL) { }
 118 
 119   void set_card_table(G1SATBCardTableLoggingModRefBS* card_table) { _card_table = card_table; }
 120 
 121   virtual void on_commit(uint start_idx, size_t num_regions, bool zero_filled);
 122 };
 123 
 124 // Adds card-table logging to the post-barrier.
 125 // Usual invariant: all dirty cards are logged in the DirtyCardQueueSet.




  86 
  87   bool is_card_claimed(size_t card_index) {
  88     jbyte val = _byte_map[card_index];
  89     return (val & (clean_card_mask_val() | claimed_card_val())) == claimed_card_val();
  90   }
  91 
  92   inline void set_card_claimed(size_t card_index);
  93 
  94   void verify_g1_young_region(MemRegion mr) PRODUCT_RETURN;
  95   void g1_mark_as_young(const MemRegion& mr);
  96 
  97   bool mark_card_deferred(size_t card_index);
  98 
  99   bool is_card_deferred(size_t card_index) {
 100     jbyte val = _byte_map[card_index];
 101     return (val & (clean_card_mask_val() | deferred_card_val())) == deferred_card_val();
 102   }
 103   virtual void write_ref_nmethod_pre(oop* dst, nmethod* nm);
 104   virtual void write_ref_nmethod_post(oop* dst, nmethod* nm);
 105 
 106   virtual void keep_alive_barrier(oop obj);
 107 
 108 
 109 };
 110 
 111 template<>
 112 struct BarrierSet::GetName<G1SATBCardTableModRefBS> {
 113   static const BarrierSet::Name value = BarrierSet::G1SATBCT;
 114 };
 115 
 116 class G1SATBCardTableLoggingModRefBSChangedListener : public G1MappingChangedListener {
 117  private:
 118   G1SATBCardTableLoggingModRefBS* _card_table;
 119  public:
 120   G1SATBCardTableLoggingModRefBSChangedListener() : _card_table(NULL) { }
 121 
 122   void set_card_table(G1SATBCardTableLoggingModRefBS* card_table) { _card_table = card_table; }
 123 
 124   virtual void on_commit(uint start_idx, size_t num_regions, bool zero_filled);
 125 };
 126 
 127 // Adds card-table logging to the post-barrier.
 128 // Usual invariant: all dirty cards are logged in the DirtyCardQueueSet.


< prev index next >