src/hotspot/share/runtime/safepoint.cpp
changeset 51334 cc2c79d22508
parent 50966 f939a67fea30
child 51338 aa3bfacc912c
equal deleted inserted replaced
51333:f6641fcf7b7e 51334:cc2c79d22508
   612   CodeBlobClosure* _nmethod_cl;
   612   CodeBlobClosure* _nmethod_cl;
   613   DeflateMonitorCounters* _counters;
   613   DeflateMonitorCounters* _counters;
   614 
   614 
   615 public:
   615 public:
   616   ParallelSPCleanupThreadClosure(DeflateMonitorCounters* counters) :
   616   ParallelSPCleanupThreadClosure(DeflateMonitorCounters* counters) :
   617     _counters(counters),
   617     _nmethod_cl(NMethodSweeper::prepare_mark_active_nmethods()), _counters(counters) {}
   618     _nmethod_cl(NMethodSweeper::prepare_mark_active_nmethods()) {}
       
   619 
   618 
   620   void do_thread(Thread* thread) {
   619   void do_thread(Thread* thread) {
   621     ObjectSynchronizer::deflate_thread_local_monitors(thread, _counters);
   620     ObjectSynchronizer::deflate_thread_local_monitors(thread, _counters);
   622     if (_nmethod_cl != NULL && thread->is_Java_thread() &&
   621     if (_nmethod_cl != NULL && thread->is_Java_thread() &&
   623         ! thread->is_Code_cache_sweeper_thread()) {
   622         ! thread->is_Code_cache_sweeper_thread()) {
   634   uint _num_workers;
   633   uint _num_workers;
   635   DeflateMonitorCounters* _counters;
   634   DeflateMonitorCounters* _counters;
   636 public:
   635 public:
   637   ParallelSPCleanupTask(uint num_workers, DeflateMonitorCounters* counters) :
   636   ParallelSPCleanupTask(uint num_workers, DeflateMonitorCounters* counters) :
   638     AbstractGangTask("Parallel Safepoint Cleanup"),
   637     AbstractGangTask("Parallel Safepoint Cleanup"),
       
   638     _subtasks(SubTasksDone(SafepointSynchronize::SAFEPOINT_CLEANUP_NUM_TASKS)),
   639     _cleanup_threads_cl(ParallelSPCleanupThreadClosure(counters)),
   639     _cleanup_threads_cl(ParallelSPCleanupThreadClosure(counters)),
   640     _num_workers(num_workers),
   640     _num_workers(num_workers),
   641     _subtasks(SubTasksDone(SafepointSynchronize::SAFEPOINT_CLEANUP_NUM_TASKS)),
       
   642     _counters(counters) {}
   641     _counters(counters) {}
   643 
   642 
   644   void work(uint worker_id) {
   643   void work(uint worker_id) {
   645     // All threads deflate monitors and mark nmethods (if necessary).
   644     // All threads deflate monitors and mark nmethods (if necessary).
   646     Threads::possibly_parallel_threads_do(true, &_cleanup_threads_cl);
   645     Threads::possibly_parallel_threads_do(true, &_cleanup_threads_cl);