44 uint _old_mt_degree;
45
46 public:
47 G1FullGCReferenceProcessingExecutor(G1FullCollector* collector);
48 ~G1FullGCReferenceProcessingExecutor();
49
50 // Do reference processing.
51 void execute(STWGCTimer* timer, G1FullGCTracer* tracer);
52
53 // Executes the given task using concurrent marking worker threads.
54 virtual void execute(ProcessTask& task, uint ergo_workers);
55
56 private:
57 void run_task(AbstractGangTask* task);
58 void run_task(AbstractGangTask* task, uint workers);
59
60 class G1RefProcTaskProxy : public AbstractGangTask {
61 typedef AbstractRefProcTaskExecutor::ProcessTask ProcessTask;
62 ProcessTask& _proc_task;
63 G1FullCollector* _collector;
64 OWSTTaskTerminator _terminator;
65
66 public:
67 G1RefProcTaskProxy(ProcessTask& proc_task,
68 G1FullCollector* scope);
69
70 virtual void work(uint worker_id);
71 };
72 };
73
74 #endif // SHARE_GC_G1_G1FULLGCREFERENCEPROCESSOREXECUTOR_HPP
|
44 uint _old_mt_degree;
45
46 public:
47 G1FullGCReferenceProcessingExecutor(G1FullCollector* collector);
48 ~G1FullGCReferenceProcessingExecutor();
49
50 // Do reference processing.
51 void execute(STWGCTimer* timer, G1FullGCTracer* tracer);
52
53 // Executes the given task using concurrent marking worker threads.
54 virtual void execute(ProcessTask& task, uint ergo_workers);
55
56 private:
57 void run_task(AbstractGangTask* task);
58 void run_task(AbstractGangTask* task, uint workers);
59
60 class G1RefProcTaskProxy : public AbstractGangTask {
61 typedef AbstractRefProcTaskExecutor::ProcessTask ProcessTask;
62 ProcessTask& _proc_task;
63 G1FullCollector* _collector;
64 TaskTerminator _terminator;
65
66 public:
67 G1RefProcTaskProxy(ProcessTask& proc_task,
68 G1FullCollector* scope);
69
70 virtual void work(uint worker_id);
71 };
72 };
73
74 #endif // SHARE_GC_G1_G1FULLGCREFERENCEPROCESSOREXECUTOR_HPP
|