539 }
540 void decrement_idle_workers() {
541 _idle_workers--;
542 }
543 // Other methods.
544 void initialize();
545
546 public:
547 // Return true if all workers are currently active.
548 bool all_workers_active() { return workers() == active_workers(); }
549 uint active_workers() const {
550 return _active_workers;
551 }
552 uint created_workers() const {
553 return _created_workers;
554 }
555 // Create a GC worker and install into GCTaskManager
556 GCTaskThread* install_worker(uint worker_id);
557 // Add GC workers as needed.
558 void add_workers(bool initializing);
559 };
560
561 //
562 // Some exemplary GCTasks.
563 //
564
565 // A noop task that does nothing,
566 // except take us around the GCTaskThread loop.
567 class NoopGCTask : public GCTask {
568 public:
569 // Factory create and destroy methods.
570 static NoopGCTask* create_on_c_heap();
571 static void destroy(NoopGCTask* that);
572
573 virtual char* name() { return (char *)"noop task"; }
574 // Methods from GCTask.
575 void do_it(GCTaskManager* manager, uint which) {
576 // Nothing to do.
577 }
578 protected:
|
539 }
540 void decrement_idle_workers() {
541 _idle_workers--;
542 }
543 // Other methods.
544 void initialize();
545
546 public:
547 // Return true if all workers are currently active.
548 bool all_workers_active() { return workers() == active_workers(); }
549 uint active_workers() const {
550 return _active_workers;
551 }
552 uint created_workers() const {
553 return _created_workers;
554 }
555 // Create a GC worker and install into GCTaskManager
556 GCTaskThread* install_worker(uint worker_id);
557 // Add GC workers as needed.
558 void add_workers(bool initializing);
559 // Base name (without worker id #) of threads.
560 const char* group_name();
561 };
562
563 //
564 // Some exemplary GCTasks.
565 //
566
567 // A noop task that does nothing,
568 // except take us around the GCTaskThread loop.
569 class NoopGCTask : public GCTask {
570 public:
571 // Factory create and destroy methods.
572 static NoopGCTask* create_on_c_heap();
573 static void destroy(NoopGCTask* that);
574
575 virtual char* name() { return (char *)"noop task"; }
576 // Methods from GCTask.
577 void do_it(GCTaskManager* manager, uint which) {
578 // Nothing to do.
579 }
580 protected:
|