< prev index next >

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

Print this page




  78       it does not it will only result in duplicate entry in the update
  79       buffer because of the "cache-miss". So it's not worth spinning.
  80  */
  81 
  82   bool is_card_claimed(size_t card_index) {
  83     jbyte val = _byte_map[card_index];
  84     return (val & (clean_card_mask_val() | claimed_card_val())) == claimed_card_val();
  85   }
  86 
  87   inline void set_card_claimed(size_t card_index);
  88 
  89   void verify_g1_young_region(MemRegion mr) PRODUCT_RETURN;
  90   void g1_mark_as_young(const MemRegion& mr);
  91 
  92   bool mark_card_deferred(size_t card_index);
  93 
  94   bool is_card_deferred(size_t card_index) {
  95     jbyte val = _byte_map[card_index];
  96     return (val & (clean_card_mask_val() | deferred_card_val())) == deferred_card_val();
  97   }
  98   virtual void write_ref_nmethod_pre(oop* dst, nmethod* nm);
  99   virtual void write_ref_nmethod_post(oop* dst, nmethod* nm);
 100 
 101 };
 102 
 103 template<>
 104 struct BarrierSet::GetName<G1SATBCardTableModRefBS> {
 105   static const BarrierSet::Name value = BarrierSet::G1SATBCT;
 106 };
 107 
 108 class G1SATBCardTableLoggingModRefBSChangedListener : public G1MappingChangedListener {
 109  private:
 110   G1SATBCardTableLoggingModRefBS* _card_table;
 111  public:
 112   G1SATBCardTableLoggingModRefBSChangedListener() : _card_table(NULL) { }
 113 
 114   void set_card_table(G1SATBCardTableLoggingModRefBS* card_table) { _card_table = card_table; }
 115 
 116   virtual void on_commit(uint start_idx, size_t num_regions, bool zero_filled);
 117 };
 118 
 119 // Adds card-table logging to the post-barrier.
 120 // Usual invariant: all dirty cards are logged in the DirtyCardQueueSet.




  78       it does not it will only result in duplicate entry in the update
  79       buffer because of the "cache-miss". So it's not worth spinning.
  80  */
  81 
  82   bool is_card_claimed(size_t card_index) {
  83     jbyte val = _byte_map[card_index];
  84     return (val & (clean_card_mask_val() | claimed_card_val())) == claimed_card_val();
  85   }
  86 
  87   inline void set_card_claimed(size_t card_index);
  88 
  89   void verify_g1_young_region(MemRegion mr) PRODUCT_RETURN;
  90   void g1_mark_as_young(const MemRegion& mr);
  91 
  92   bool mark_card_deferred(size_t card_index);
  93 
  94   bool is_card_deferred(size_t card_index) {
  95     jbyte val = _byte_map[card_index];
  96     return (val & (clean_card_mask_val() | deferred_card_val())) == deferred_card_val();
  97   }



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


< prev index next >