src/hotspot/share/gc/shared/referenceProcessor.hpp
changeset 50071 758deedaae84
parent 50054 4fa726f796f5
child 50097 ed8a43d83fcc
equal deleted inserted replaced
50070:c036b84c6bbf 50071:758deedaae84
   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