equal
deleted
inserted
replaced
31 |
31 |
32 class GangWorker; |
32 class GangWorker; |
33 class WorkData; |
33 class WorkData; |
34 |
34 |
35 YieldingFlexibleWorkGang::YieldingFlexibleWorkGang( |
35 YieldingFlexibleWorkGang::YieldingFlexibleWorkGang( |
36 const char* name, int workers, bool are_GC_task_threads) : |
36 const char* name, uint workers, bool are_GC_task_threads) : |
37 FlexibleWorkGang(name, workers, are_GC_task_threads, false), |
37 FlexibleWorkGang(name, workers, are_GC_task_threads, false), |
38 _yielded_workers(0) {} |
38 _yielded_workers(0) {} |
39 |
39 |
40 GangWorker* YieldingFlexibleWorkGang::allocate_worker(int which) { |
40 GangWorker* YieldingFlexibleWorkGang::allocate_worker(uint which) { |
41 YieldingFlexibleGangWorker* new_member = |
41 YieldingFlexibleGangWorker* new_member = |
42 new YieldingFlexibleGangWorker(this, which); |
42 new YieldingFlexibleGangWorker(this, which); |
43 return (YieldingFlexibleGangWorker*) new_member; |
43 return (YieldingFlexibleGangWorker*) new_member; |
44 } |
44 } |
45 |
45 |
118 // Bind task to gang |
118 // Bind task to gang |
119 _task = new_task; |
119 _task = new_task; |
120 new_task->set_gang(this); // Establish 2-way binding to support yielding |
120 new_task->set_gang(this); // Establish 2-way binding to support yielding |
121 _sequence_number++; |
121 _sequence_number++; |
122 |
122 |
123 int requested_size = new_task->requested_size(); |
123 uint requested_size = new_task->requested_size(); |
124 assert(requested_size >= 0, "Should be non-negative"); |
124 assert(requested_size >= 0, "Should be non-negative"); |
125 if (requested_size != 0) { |
125 if (requested_size != 0) { |
126 _active_workers = MIN2(requested_size, total_workers()); |
126 _active_workers = MIN2(requested_size, total_workers()); |
127 } else { |
127 } else { |
128 _active_workers = active_workers(); |
128 _active_workers = active_workers(); |