comparison src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp @ 17757:eff02b5bd56c

8035654: Add times for evacuation failure handling in "Other" time Summary: Detailed breakdown of time spent in the evacuation failure handling phases to make the "Other" time roughly correspond to the sum of its parts. Reviewed-by: jwilhelm, jmasa
author tschatzl
date Mon, 24 Mar 2014 15:30:46 +0100
parents a07bea31ef35
children ae7336d6337e
comparison
equal deleted inserted replaced
17756:a07bea31ef35 17757:eff02b5bd56c
2358 } 2358 }
2359 size_t result() { return _used; } 2359 size_t result() { return _used; }
2360 }; 2360 };
2361 2361
2362 size_t G1CollectedHeap::recalculate_used() const { 2362 size_t G1CollectedHeap::recalculate_used() const {
2363 double recalculate_used_start = os::elapsedTime();
2364
2363 SumUsedClosure blk; 2365 SumUsedClosure blk;
2364 heap_region_iterate(&blk); 2366 heap_region_iterate(&blk);
2367
2368 g1_policy()->phase_times()->record_evac_fail_recalc_used_time((os::elapsedTime() - recalculate_used_start) * 1000.0);
2365 return blk.result(); 2369 return blk.result();
2366 } 2370 }
2367 2371
2368 size_t G1CollectedHeap::unsafe_max_alloc() { 2372 size_t G1CollectedHeap::unsafe_max_alloc() {
2369 if (free_regions() > 0) return HeapRegion::GrainBytes; 2373 if (free_regions() > 0) return HeapRegion::GrainBytes;
4392 } 4396 }
4393 4397
4394 void G1CollectedHeap::remove_self_forwarding_pointers() { 4398 void G1CollectedHeap::remove_self_forwarding_pointers() {
4395 assert(check_cset_heap_region_claim_values(HeapRegion::InitialClaimValue), "sanity"); 4399 assert(check_cset_heap_region_claim_values(HeapRegion::InitialClaimValue), "sanity");
4396 4400
4401 double remove_self_forwards_start = os::elapsedTime();
4402
4397 G1ParRemoveSelfForwardPtrsTask rsfp_task(this); 4403 G1ParRemoveSelfForwardPtrsTask rsfp_task(this);
4398 4404
4399 if (G1CollectedHeap::use_parallel_gc_threads()) { 4405 if (G1CollectedHeap::use_parallel_gc_threads()) {
4400 set_par_threads(); 4406 set_par_threads();
4401 workers()->run_task(&rsfp_task); 4407 workers()->run_task(&rsfp_task);
4419 markOop m = _preserved_marks_of_objs.pop(); 4425 markOop m = _preserved_marks_of_objs.pop();
4420 obj->set_mark(m); 4426 obj->set_mark(m);
4421 } 4427 }
4422 _objs_with_preserved_marks.clear(true); 4428 _objs_with_preserved_marks.clear(true);
4423 _preserved_marks_of_objs.clear(true); 4429 _preserved_marks_of_objs.clear(true);
4430
4431 g1_policy()->phase_times()->record_evac_fail_remove_self_forwards((os::elapsedTime() - remove_self_forwards_start) * 1000.0);
4424 } 4432 }
4425 4433
4426 void G1CollectedHeap::push_on_evac_failure_scan_stack(oop obj) { 4434 void G1CollectedHeap::push_on_evac_failure_scan_stack(oop obj) {
4427 _evac_failure_scan_stack->push(obj); 4435 _evac_failure_scan_stack->push(obj);
4428 } 4436 }