equal
deleted
inserted
replaced
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); |