< prev index next >

src/share/vm/gc/g1/heapRegionRemSet.cpp

Print this page
rev 12906 : [mq]: gc_interface

*** 99,109 **** // make sure that we detect this. Thus, we call is_in_reserved_raw() // instead of just is_in_reserved() here. if (loc_hr->is_in_reserved(from)) { size_t hw_offset = pointer_delta((HeapWord*)from, loc_hr->bottom()); CardIdx_t from_card = (CardIdx_t) ! hw_offset >> (CardTableModRefBS::card_shift - LogHeapWordSize); assert((size_t)from_card < HeapRegion::CardsPerRegion, "Must be in range."); add_card_work(from_card, par); } --- 99,109 ---- // make sure that we detect this. Thus, we call is_in_reserved_raw() // instead of just is_in_reserved() here. if (loc_hr->is_in_reserved(from)) { size_t hw_offset = pointer_delta((HeapWord*)from, loc_hr->bottom()); CardIdx_t from_card = (CardIdx_t) ! hw_offset >> (G1CardTable::card_shift - LogHeapWordSize); assert((size_t)from_card < HeapRegion::CardsPerRegion, "Must be in range."); add_card_work(from_card, par); }
*** 168,178 **** // Requires "from" to be in "hr()". bool contains_reference(OopOrNarrowOopStar from) const { assert(hr()->is_in_reserved(from), "Precondition."); size_t card_ind = pointer_delta(from, hr()->bottom(), ! CardTableModRefBS::card_size); return _bm.at(card_ind); } // Bulk-free the PRTs from prt to last, assumes that they are // linked together using their _next field. --- 168,178 ---- // Requires "from" to be in "hr()". bool contains_reference(OopOrNarrowOopStar from) const { assert(hr()->is_in_reserved(from), "Precondition."); size_t card_ind = pointer_delta(from, hr()->bottom(), ! G1CardTable::card_size); return _bm.at(card_ind); } // Bulk-free the PRTs from prt to last, assumes that they are // linked together using their _next field.
*** 354,364 **** } void OtherRegionsTable::add_reference(OopOrNarrowOopStar from, uint tid) { uint cur_hrm_ind = _hr->hrm_index(); ! int from_card = (int)(uintptr_t(from) >> CardTableModRefBS::card_shift); if (G1FromCardCache::contains_or_replace(tid, cur_hrm_ind, from_card)) { assert(contains_reference(from), "We just found " PTR_FORMAT " in the FromCardCache", p2i(from)); return; } --- 354,364 ---- } void OtherRegionsTable::add_reference(OopOrNarrowOopStar from, uint tid) { uint cur_hrm_ind = _hr->hrm_index(); ! int from_card = (int)(uintptr_t(from) >> G1CardTable::card_shift); if (G1FromCardCache::contains_or_replace(tid, cur_hrm_ind, from_card)) { assert(contains_reference(from), "We just found " PTR_FORMAT " in the FromCardCache", p2i(from)); return; }
*** 382,392 **** prt = find_region_table(ind, from_hr); if (prt == NULL) { uintptr_t from_hr_bot_card_index = uintptr_t(from_hr->bottom()) ! >> CardTableModRefBS::card_shift; CardIdx_t card_index = from_card - from_hr_bot_card_index; assert((size_t)card_index < HeapRegion::CardsPerRegion, "Must be in range."); if (G1HRRSUseSparseTable && _sparse_table.add_card(from_hrm_ind, card_index)) { --- 382,392 ---- prt = find_region_table(ind, from_hr); if (prt == NULL) { uintptr_t from_hr_bot_card_index = uintptr_t(from_hr->bottom()) ! >> G1CardTable::card_shift; CardIdx_t card_index = from_card - from_hr_bot_card_index; assert((size_t)card_index < HeapRegion::CardsPerRegion, "Must be in range."); if (G1HRRSUseSparseTable && _sparse_table.add_card(from_hrm_ind, card_index)) {
*** 671,683 **** if (prt != NULL) { return prt->contains_reference(from); } else { uintptr_t from_card = ! (uintptr_t(from) >> CardTableModRefBS::card_shift); uintptr_t hr_bot_card_index = ! uintptr_t(hr->bottom()) >> CardTableModRefBS::card_shift; assert(from_card >= hr_bot_card_index, "Inv"); CardIdx_t card_index = from_card - hr_bot_card_index; assert((size_t)card_index < HeapRegion::CardsPerRegion, "Must be in range."); return _sparse_table.contains_card(hr_ind, card_index); --- 671,683 ---- if (prt != NULL) { return prt->contains_reference(from); } else { uintptr_t from_card = ! (uintptr_t(from) >> G1CardTable::card_shift); uintptr_t hr_bot_card_index = ! uintptr_t(hr->bottom()) >> G1CardTable::card_shift; assert(from_card >= hr_bot_card_index, "Inv"); CardIdx_t card_index = from_card - hr_bot_card_index; assert((size_t)card_index < HeapRegion::CardsPerRegion, "Must be in range."); return _sparse_table.contains_card(hr_ind, card_index);
< prev index next >