equal
deleted
inserted
replaced
587 class AbstractRefProcTaskExecutor { |
587 class AbstractRefProcTaskExecutor { |
588 public: |
588 public: |
589 |
589 |
590 // Abstract tasks to execute. |
590 // Abstract tasks to execute. |
591 class ProcessTask; |
591 class ProcessTask; |
592 class EnqueueTask; |
|
593 |
592 |
594 // Executes a task using worker threads. |
593 // Executes a task using worker threads. |
595 virtual void execute(ProcessTask& task) = 0; |
594 virtual void execute(ProcessTask& task) = 0; |
596 virtual void execute(EnqueueTask& task) = 0; |
|
597 |
595 |
598 // Switch to single threaded mode. |
596 // Switch to single threaded mode. |
599 virtual void set_single_threaded_mode() { }; |
597 virtual void set_single_threaded_mode() { }; |
600 }; |
598 }; |
601 |
599 |
626 DiscoveredList* _refs_lists; |
624 DiscoveredList* _refs_lists; |
627 ReferenceProcessorPhaseTimes* _phase_times; |
625 ReferenceProcessorPhaseTimes* _phase_times; |
628 const bool _marks_oops_alive; |
626 const bool _marks_oops_alive; |
629 }; |
627 }; |
630 |
628 |
631 // Abstract reference processing task to execute. |
|
632 class AbstractRefProcTaskExecutor::EnqueueTask { |
|
633 protected: |
|
634 EnqueueTask(ReferenceProcessor& ref_processor, |
|
635 DiscoveredList refs_lists[], |
|
636 int n_queues, |
|
637 ReferenceProcessorPhaseTimes* phase_times) |
|
638 : _ref_processor(ref_processor), |
|
639 _refs_lists(refs_lists), |
|
640 _n_queues(n_queues), |
|
641 _phase_times(phase_times) |
|
642 { } |
|
643 |
|
644 public: |
|
645 virtual void work(unsigned int work_id) = 0; |
|
646 |
|
647 protected: |
|
648 ReferenceProcessor& _ref_processor; |
|
649 DiscoveredList* _refs_lists; |
|
650 ReferenceProcessorPhaseTimes* _phase_times; |
|
651 int _n_queues; |
|
652 }; |
|
653 |
|
654 #endif // SHARE_VM_GC_SHARED_REFERENCEPROCESSOR_HPP |
629 #endif // SHARE_VM_GC_SHARED_REFERENCEPROCESSOR_HPP |