void HeapRegion::hr_clear(bool par, bool clear_space) { _humongous_type = NotHumongous; _humongous_start_region = NULL; _in_collection_set = false; _is_gc_alloc_region = false; // Age stuff (if parallel, this will be done separately, since it needs // to be sequential). G1CollectedHeap* g1h = G1CollectedHeap::heap(); set_young_index_in_cset(-1); uninstall_surv_rate_group(); set_young_type(NotYoung); // In case it had been the start of a humongous sequence, reset its end. set_end(_orig_end); if (!par) { // If this is parallel, this will be done later. HeapRegionRemSet* hrrs = rem_set(); if (hrrs != NULL) hrrs->clear(); _claimed = InitialClaimValue; } zero_marked_bytes(); set_sort_index(-1); _offsets.resize(HeapRegion::GrainWords); init_top_at_mark_start(); if (clear_space) clear(SpaceDecorator::Mangle); }
void HeapRegion::hr_clear(bool par, bool clear_space, bool locked) { assert(_humongous_type == NotHumongous, "we should have already filtered out humongous regions"); assert(_humongous_start_region == NULL, "we should have already filtered out humongous regions"); assert(_end == _orig_end, "we should have already filtered out humongous regions"); _in_collection_set = false; set_young_index_in_cset(-1); uninstall_surv_rate_group(); set_young_type(NotYoung); reset_pre_dummy_top(); if (!par) { // If this is parallel, this will be done later. HeapRegionRemSet* hrrs = rem_set(); if (locked) { hrrs->clear_locked(); } else { hrrs->clear(); } _claimed = InitialClaimValue; } zero_marked_bytes(); _offsets.resize(HeapRegion::GrainWords); init_top_at_mark_start(); if (clear_space) clear(SpaceDecorator::Mangle); }
void HeapRegion::par_clear() { assert(used() == 0, "the region should have been already cleared"); assert(capacity() == HeapRegion::GrainBytes, "should be back to normal"); HeapRegionRemSet* hrrs = rem_set(); hrrs->clear(); CardTableModRefBS* ct_bs = (CardTableModRefBS*)G1CollectedHeap::heap()->barrier_set(); ct_bs->clear(MemRegion(bottom(), end())); }