< prev index next >

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

Print this page

        

*** 460,479 **** CardIdx_t card_index = from_card - from_hr_bot_card_index; assert(0 <= card_index && (size_t)card_index < HeapRegion::CardsPerRegion, "Must be in range."); if (G1HRRSUseSparseTable && _sparse_table.add_card(from_hrm_ind, card_index)) { - if (G1RecordHRRSOops) { - HeapRegionRemSet::record(_hr, from); - if (G1TraceHeapRegionRememberedSet) { - gclog_or_tty->print(" Added card " PTR_FORMAT " to region " - "[" PTR_FORMAT "...) for ref " PTR_FORMAT ".\n", - align_size_down(uintptr_t(from), - CardTableModRefBS::card_size), - p2i(_hr->bottom()), p2i(from)); - } - } if (G1TraceHeapRegionRememberedSet) { gclog_or_tty->print_cr(" added card to sparse table."); } assert(contains_reference_locked(from), "We just added it!"); return; --- 460,469 ----
*** 529,549 **** // possibility of concurrent reuse. But see head comment of // OtherRegionsTable for why this is OK. assert(prt != NULL, "Inv"); prt->add_reference(from); - - if (G1RecordHRRSOops) { - HeapRegionRemSet::record(_hr, from); - if (G1TraceHeapRegionRememberedSet) { - gclog_or_tty->print("Added card " PTR_FORMAT " to region " - "[" PTR_FORMAT "...) for ref " PTR_FORMAT ".\n", - align_size_down(uintptr_t(from), - CardTableModRefBS::card_size), - p2i(_hr->bottom()), p2i(from)); - } - } assert(contains_reference(from), "We just added it!"); } PerRegionTable* OtherRegionsTable::find_region_table(size_t ind, HeapRegion* hr) const { --- 519,528 ----
*** 1069,1171 **** "Should have yielded all the cards in the rem set " "(in the non-par case)."); return false; } - - - OopOrNarrowOopStar* HeapRegionRemSet::_recorded_oops = NULL; - HeapWord** HeapRegionRemSet::_recorded_cards = NULL; - HeapRegion** HeapRegionRemSet::_recorded_regions = NULL; - int HeapRegionRemSet::_n_recorded = 0; - - HeapRegionRemSet::Event* HeapRegionRemSet::_recorded_events = NULL; - int* HeapRegionRemSet::_recorded_event_index = NULL; - int HeapRegionRemSet::_n_recorded_events = 0; - - void HeapRegionRemSet::record(HeapRegion* hr, OopOrNarrowOopStar f) { - if (_recorded_oops == NULL) { - assert(_n_recorded == 0 - && _recorded_cards == NULL - && _recorded_regions == NULL, - "Inv"); - _recorded_oops = NEW_C_HEAP_ARRAY(OopOrNarrowOopStar, MaxRecorded, mtGC); - _recorded_cards = NEW_C_HEAP_ARRAY(HeapWord*, MaxRecorded, mtGC); - _recorded_regions = NEW_C_HEAP_ARRAY(HeapRegion*, MaxRecorded, mtGC); - } - if (_n_recorded == MaxRecorded) { - gclog_or_tty->print_cr("Filled up 'recorded' (%d).", MaxRecorded); - } else { - _recorded_cards[_n_recorded] = - (HeapWord*)align_size_down(uintptr_t(f), - CardTableModRefBS::card_size); - _recorded_oops[_n_recorded] = f; - _recorded_regions[_n_recorded] = hr; - _n_recorded++; - } - } - - void HeapRegionRemSet::record_event(Event evnt) { - if (!G1RecordHRRSEvents) return; - - if (_recorded_events == NULL) { - assert(_n_recorded_events == 0 - && _recorded_event_index == NULL, - "Inv"); - _recorded_events = NEW_C_HEAP_ARRAY(Event, MaxRecordedEvents, mtGC); - _recorded_event_index = NEW_C_HEAP_ARRAY(int, MaxRecordedEvents, mtGC); - } - if (_n_recorded_events == MaxRecordedEvents) { - gclog_or_tty->print_cr("Filled up 'recorded_events' (%d).", MaxRecordedEvents); - } else { - _recorded_events[_n_recorded_events] = evnt; - _recorded_event_index[_n_recorded_events] = _n_recorded; - _n_recorded_events++; - } - } - - void HeapRegionRemSet::print_event(outputStream* str, Event evnt) { - switch (evnt) { - case Event_EvacStart: - str->print("Evac Start"); - break; - case Event_EvacEnd: - str->print("Evac End"); - break; - case Event_RSUpdateEnd: - str->print("RS Update End"); - break; - } - } - - void HeapRegionRemSet::print_recorded() { - int cur_evnt = 0; - Event cur_evnt_kind = Event_illegal; - int cur_evnt_ind = 0; - if (_n_recorded_events > 0) { - cur_evnt_kind = _recorded_events[cur_evnt]; - cur_evnt_ind = _recorded_event_index[cur_evnt]; - } - - for (int i = 0; i < _n_recorded; i++) { - while (cur_evnt < _n_recorded_events && i == cur_evnt_ind) { - gclog_or_tty->print("Event: "); - print_event(gclog_or_tty, cur_evnt_kind); - gclog_or_tty->cr(); - cur_evnt++; - if (cur_evnt < MaxRecordedEvents) { - cur_evnt_kind = _recorded_events[cur_evnt]; - cur_evnt_ind = _recorded_event_index[cur_evnt]; - } - } - gclog_or_tty->print("Added card " PTR_FORMAT " to region [" PTR_FORMAT "...]" - " for ref " PTR_FORMAT ".\n", - p2i(_recorded_cards[i]), p2i(_recorded_regions[i]->bottom()), - p2i(_recorded_oops[i])); - } - } - void HeapRegionRemSet::reset_for_cleanup_tasks() { SparsePRT::reset_for_cleanup_tasks(); } void HeapRegionRemSet::do_cleanup_work(HRRSCleanupTask* hrrs_cleanup_task) { --- 1048,1057 ----
< prev index next >