< prev index next >

src/hotspot/share/gc/shenandoah/shenandoahWorkGroup.cpp

Print this page
rev 48920 : [backport] Use PLAB for evacuations instead of TLAB


  40 ShenandoahPushWorkerScope::ShenandoahPushWorkerScope(WorkGang* workers, uint nworkers, bool check) :
  41   _workers(workers), _old_workers(workers->active_workers()), _n_workers(nworkers) {
  42   _workers->update_active_workers(nworkers);
  43 
  44   // bypass concurrent/parallel protocol check for non-regular paths, e.g. verifier, etc.
  45   if (!check) {
  46     ShenandoahHeap::heap()->assert_gc_workers(nworkers);
  47   }
  48 }
  49 
  50 ShenandoahPushWorkerScope::~ShenandoahPushWorkerScope() {
  51   assert(_workers->active_workers() == _n_workers,
  52     "Active workers can not be changed within this scope");
  53   // Restore old worker value
  54   _workers->update_active_workers(_old_workers);
  55 }
  56 
  57 AbstractGangWorker* ShenandoahWorkGang::install_worker(uint which) {
  58   AbstractGangWorker* worker = WorkGang::install_worker(which);
  59   if (_initialize_gclab) {
  60     worker->gclab().initialize(true);
  61   }
  62 
  63   return worker;
  64 }


  40 ShenandoahPushWorkerScope::ShenandoahPushWorkerScope(WorkGang* workers, uint nworkers, bool check) :
  41   _workers(workers), _old_workers(workers->active_workers()), _n_workers(nworkers) {
  42   _workers->update_active_workers(nworkers);
  43 
  44   // bypass concurrent/parallel protocol check for non-regular paths, e.g. verifier, etc.
  45   if (!check) {
  46     ShenandoahHeap::heap()->assert_gc_workers(nworkers);
  47   }
  48 }
  49 
  50 ShenandoahPushWorkerScope::~ShenandoahPushWorkerScope() {
  51   assert(_workers->active_workers() == _n_workers,
  52     "Active workers can not be changed within this scope");
  53   // Restore old worker value
  54   _workers->update_active_workers(_old_workers);
  55 }
  56 
  57 AbstractGangWorker* ShenandoahWorkGang::install_worker(uint which) {
  58   AbstractGangWorker* worker = WorkGang::install_worker(which);
  59   if (_initialize_gclab) {
  60     ShenandoahHeap::heap()->initialize_gclab(worker);
  61   }
  62 
  63   return worker;
  64 }
< prev index next >