Mercurial > hg > graal-compiler
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 } |