< prev index next >

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

Print this page
rev 8630 : imported patch tom-fixes


4256 }
4257 
4258 void G1CollectedHeap::init_for_evac_failure(OopsInHeapRegionClosure* cl) {
4259   _drain_in_progress = false;
4260   set_evac_failure_closure(cl);
4261   _evac_failure_scan_stack = new (ResourceObj::C_HEAP, mtGC) GrowableArray<oop>(40, true);
4262 }
4263 
4264 void G1CollectedHeap::finalize_for_evac_failure() {
4265   assert(_evac_failure_scan_stack != NULL &&
4266          _evac_failure_scan_stack->length() == 0,
4267          "Postcondition");
4268   assert(!_drain_in_progress, "Postcondition");
4269   delete _evac_failure_scan_stack;
4270   _evac_failure_scan_stack = NULL;
4271 }
4272 
4273 void G1CollectedHeap::remove_self_forwarding_pointers() {
4274   double remove_self_forwards_start = os::elapsedTime();
4275 
4276   G1ParRemoveSelfForwardPtrsTask rsfp_task(this);
4277   workers()->run_task(&rsfp_task);
4278 
4279   // Now restore saved marks, if any.
4280   assert(_objs_with_preserved_marks.size() ==
4281             _preserved_marks_of_objs.size(), "Both or none.");
4282   while (!_objs_with_preserved_marks.is_empty()) {
4283     oop obj = _objs_with_preserved_marks.pop();
4284     markOop m = _preserved_marks_of_objs.pop();
4285     obj->set_mark(m);
4286   }
4287   _objs_with_preserved_marks.clear(true);
4288   _preserved_marks_of_objs.clear(true);
4289 
4290   g1_policy()->phase_times()->record_evac_fail_remove_self_forwards((os::elapsedTime() - remove_self_forwards_start) * 1000.0);
4291 }
4292 
4293 void G1CollectedHeap::push_on_evac_failure_scan_stack(oop obj) {
4294   _evac_failure_scan_stack->push(obj);
4295 }
4296 




4256 }
4257 
4258 void G1CollectedHeap::init_for_evac_failure(OopsInHeapRegionClosure* cl) {
4259   _drain_in_progress = false;
4260   set_evac_failure_closure(cl);
4261   _evac_failure_scan_stack = new (ResourceObj::C_HEAP, mtGC) GrowableArray<oop>(40, true);
4262 }
4263 
4264 void G1CollectedHeap::finalize_for_evac_failure() {
4265   assert(_evac_failure_scan_stack != NULL &&
4266          _evac_failure_scan_stack->length() == 0,
4267          "Postcondition");
4268   assert(!_drain_in_progress, "Postcondition");
4269   delete _evac_failure_scan_stack;
4270   _evac_failure_scan_stack = NULL;
4271 }
4272 
4273 void G1CollectedHeap::remove_self_forwarding_pointers() {
4274   double remove_self_forwards_start = os::elapsedTime();
4275 
4276   G1ParRemoveSelfForwardPtrsTask rsfp_task;
4277   workers()->run_task(&rsfp_task);
4278 
4279   // Now restore saved marks, if any.
4280   assert(_objs_with_preserved_marks.size() ==
4281             _preserved_marks_of_objs.size(), "Both or none.");
4282   while (!_objs_with_preserved_marks.is_empty()) {
4283     oop obj = _objs_with_preserved_marks.pop();
4284     markOop m = _preserved_marks_of_objs.pop();
4285     obj->set_mark(m);
4286   }
4287   _objs_with_preserved_marks.clear(true);
4288   _preserved_marks_of_objs.clear(true);
4289 
4290   g1_policy()->phase_times()->record_evac_fail_remove_self_forwards((os::elapsedTime() - remove_self_forwards_start) * 1000.0);
4291 }
4292 
4293 void G1CollectedHeap::push_on_evac_failure_scan_stack(oop obj) {
4294   _evac_failure_scan_stack->push(obj);
4295 }
4296 


< prev index next >