hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
changeset 24103 956dc4aa4615
parent 24100 7e71ac14ec06
child 24104 febf9363fb68
equal deleted inserted replaced
24102:5e9eb5aa4dc5 24103:956dc4aa4615
  4560   // Trying to keep some compilers happy.
  4560   // Trying to keep some compilers happy.
  4561   return NULL;
  4561   return NULL;
  4562 }
  4562 }
  4563 
  4563 
  4564 G1ParGCAllocBuffer::G1ParGCAllocBuffer(size_t gclab_word_size) :
  4564 G1ParGCAllocBuffer::G1ParGCAllocBuffer(size_t gclab_word_size) :
  4565   ParGCAllocBuffer(gclab_word_size), _retired(false) { }
  4565   ParGCAllocBuffer(gclab_word_size), _retired(true) { }
  4566 
  4566 
  4567 G1ParScanThreadState::G1ParScanThreadState(G1CollectedHeap* g1h, uint queue_num, ReferenceProcessor* rp)
  4567 G1ParScanThreadState::G1ParScanThreadState(G1CollectedHeap* g1h, uint queue_num, ReferenceProcessor* rp)
  4568   : _g1h(g1h),
  4568   : _g1h(g1h),
  4569     _refs(g1h->task_queue(queue_num)),
  4569     _refs(g1h->task_queue(queue_num)),
  4570     _dcq(&g1h->dirty_card_queue_set()),
  4570     _dcq(&g1h->dirty_card_queue_set()),
  4924       // available new entries on the queues. So we have to make sure
  4924       // available new entries on the queues. So we have to make sure
  4925       // we drain the queues as necessary.
  4925       // we drain the queues as necessary.
  4926       pss->trim_queue();
  4926       pss->trim_queue();
  4927     }
  4927     }
  4928   } while (!offer_termination());
  4928   } while (!offer_termination());
  4929 
       
  4930   pss->retire_alloc_buffers();
       
  4931 }
  4929 }
  4932 
  4930 
  4933 class G1KlassScanClosure : public KlassClosure {
  4931 class G1KlassScanClosure : public KlassClosure {
  4934  G1ParCopyHelper* _closure;
  4932  G1ParCopyHelper* _closure;
  4935  bool             _process_only_dirty;
  4933  bool             _process_only_dirty;
  5751                                               &par_task_executor,
  5749                                               &par_task_executor,
  5752                                               _gc_timer_stw);
  5750                                               _gc_timer_stw);
  5753   }
  5751   }
  5754 
  5752 
  5755   _gc_tracer_stw->report_gc_reference_stats(stats);
  5753   _gc_tracer_stw->report_gc_reference_stats(stats);
  5756   // We have completed copying any necessary live referent objects
  5754 
  5757   // (that were not copied during the actual pause) so we can
  5755   // We have completed copying any necessary live referent objects.
  5758   // retire any active alloc buffers
       
  5759   pss.retire_alloc_buffers();
       
  5760   assert(pss.refs()->is_empty(), "both queue and overflow should be empty");
  5756   assert(pss.refs()->is_empty(), "both queue and overflow should be empty");
  5761 
  5757 
  5762   double ref_proc_time = os::elapsedTime() - ref_proc_start;
  5758   double ref_proc_time = os::elapsedTime() - ref_proc_start;
  5763   g1_policy()->phase_times()->record_ref_proc_time(ref_proc_time * 1000.0);
  5759   g1_policy()->phase_times()->record_ref_proc_time(ref_proc_time * 1000.0);
  5764 }
  5760 }