125 } 126 void write_ref_field_gc_work(void* field, oop new_val) { 127 inline_write_ref_field_gc(field, new_val); 128 } 129 130 // Override. Might want to devirtualize this in the same fashion as 131 // above. Ensures that the value of the card for field says that it's 132 // a younger card in the current collection. 133 virtual void write_ref_field_gc_par(void* field, oop new_val); 134 135 void resize_covered_region(MemRegion new_region); 136 137 bool is_aligned(HeapWord* addr) { 138 return _ct_bs->is_card_aligned(addr); 139 } 140 141 void verify(); 142 void verify_aligned_region_empty(MemRegion mr); 143 144 void clear(MemRegion mr) { _ct_bs->clear(mr); } 145 void clear_into_younger(Generation* gen); 146 147 void invalidate(MemRegion mr, bool whole_heap = false) { 148 _ct_bs->invalidate(mr, whole_heap); 149 } 150 void invalidate_or_clear(Generation* gen); 151 152 static uintx ct_max_alignment_constraint() { 153 return CardTableModRefBS::ct_max_alignment_constraint(); 154 } 155 156 jbyte* byte_for(void* p) { return _ct_bs->byte_for(p); } 157 jbyte* byte_after(void* p) { return _ct_bs->byte_after(p); } 158 HeapWord* addr_for(jbyte* p) { return _ct_bs->addr_for(p); } 159 160 bool is_prev_nonclean_card_val(jbyte v) { 161 return 162 youngergen_card <= v && 163 v <= cur_youngergen_and_prev_nonclean_card && 164 v != _cur_youngergen_card_val; 165 } 166 167 static bool youngergen_may_have_been_dirty(jbyte cv) { 168 return cv == CardTableRS::cur_youngergen_and_prev_nonclean_card; 169 } 170 | 125 } 126 void write_ref_field_gc_work(void* field, oop new_val) { 127 inline_write_ref_field_gc(field, new_val); 128 } 129 130 // Override. Might want to devirtualize this in the same fashion as 131 // above. Ensures that the value of the card for field says that it's 132 // a younger card in the current collection. 133 virtual void write_ref_field_gc_par(void* field, oop new_val); 134 135 void resize_covered_region(MemRegion new_region); 136 137 bool is_aligned(HeapWord* addr) { 138 return _ct_bs->is_card_aligned(addr); 139 } 140 141 void verify(); 142 void verify_aligned_region_empty(MemRegion mr); 143 144 void clear(MemRegion mr) { _ct_bs->clear(mr); } 145 void clear_into_younger(Generation* old_gen); 146 147 void invalidate(MemRegion mr, bool whole_heap = false) { 148 _ct_bs->invalidate(mr, whole_heap); 149 } 150 void invalidate_or_clear(Generation* old_gen); 151 152 static uintx ct_max_alignment_constraint() { 153 return CardTableModRefBS::ct_max_alignment_constraint(); 154 } 155 156 jbyte* byte_for(void* p) { return _ct_bs->byte_for(p); } 157 jbyte* byte_after(void* p) { return _ct_bs->byte_after(p); } 158 HeapWord* addr_for(jbyte* p) { return _ct_bs->addr_for(p); } 159 160 bool is_prev_nonclean_card_val(jbyte v) { 161 return 162 youngergen_card <= v && 163 v <= cur_youngergen_and_prev_nonclean_card && 164 v != _cur_youngergen_card_val; 165 } 166 167 static bool youngergen_may_have_been_dirty(jbyte cv) { 168 return cv == CardTableRS::cur_youngergen_and_prev_nonclean_card; 169 } 170 |