8216072: Remove TaskTerminator's assignment operator

Reviewed-by: tschatzl, rkennke, kbarrett
This commit is contained in:
Zhengyu Gu 2019-01-31 10:18:41 -05:00
parent a62c3f5015
commit 85e19d8beb
3 changed files with 4 additions and 30 deletions

View file

@ -588,7 +588,7 @@ void G1ConcurrentMark::set_concurrency(uint active_tasks) {
_num_active_tasks = active_tasks; _num_active_tasks = active_tasks;
// Need to update the three data structures below according to the // Need to update the three data structures below according to the
// number of active threads for this phase. // number of active threads for this phase.
_terminator = TaskTerminator((int) active_tasks, _task_queues); _terminator.terminator()->reset_for_reuse((int) active_tasks);
_first_overflow_barrier_sync.set_n_workers((int) active_tasks); _first_overflow_barrier_sync.set_n_workers((int) active_tasks);
_second_overflow_barrier_sync.set_n_workers((int) active_tasks); _second_overflow_barrier_sync.set_n_workers((int) active_tasks);
} }

View file

@ -281,13 +281,3 @@ TaskTerminator::~TaskTerminator() {
} }
} }
// Move assignment
TaskTerminator& TaskTerminator::operator=(const TaskTerminator& o) {
if (_terminator != NULL) {
delete _terminator;
}
_terminator = o.terminator();
const_cast<TaskTerminator&>(o)._terminator = NULL;
return *this;
}

View file

@ -510,37 +510,21 @@ public:
#endif #endif
}; };
#ifdef _MSC_VER
#pragma warning(push)
// warning C4521: multiple copy constructors specified
#pragma warning(disable:4521)
// warning C4522: multiple assignment operators specified
#pragma warning(disable:4522)
#endif
class TaskTerminator : public StackObj { class TaskTerminator : public StackObj {
private: private:
ParallelTaskTerminator* _terminator; ParallelTaskTerminator* _terminator;
// Disable following copy constructors and assignment operator // Noncopyable.
TaskTerminator(TaskTerminator& o) { } TaskTerminator(const TaskTerminator&);
TaskTerminator(const TaskTerminator& o) { } TaskTerminator& operator=(const TaskTerminator&);
TaskTerminator& operator=(TaskTerminator& o) { return *this; }
public: public:
TaskTerminator(uint n_threads, TaskQueueSetSuper* queue_set); TaskTerminator(uint n_threads, TaskQueueSetSuper* queue_set);
~TaskTerminator(); ~TaskTerminator();
// Move assignment
TaskTerminator& operator=(const TaskTerminator& o);
ParallelTaskTerminator* terminator() const { ParallelTaskTerminator* terminator() const {
return _terminator; return _terminator;
} }
}; };
#ifdef _MSC_VER
#pragma warning(pop)
#endif
typedef GenericTaskQueue<oop, mtGC> OopTaskQueue; typedef GenericTaskQueue<oop, mtGC> OopTaskQueue;
typedef GenericTaskQueueSet<OopTaskQueue, mtGC> OopTaskQueueSet; typedef GenericTaskQueueSet<OopTaskQueue, mtGC> OopTaskQueueSet;