hotspot/src/share/vm/utilities/yieldingWorkgroup.cpp
changeset 11396 917d8673b5ef
parent 11174 fccee5238e70
child 15482 470d0b0c09f1
equal deleted inserted replaced
11395:33260c27554b 11396:917d8673b5ef
    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();