< prev index next >

src/share/vm/gc/shenandoah/vm_operations_shenandoah.cpp

Print this page
rev 12117 : Pin regions that contain JNI critical regions, instead of bail-and-retry protocol.


  73     sh->shenandoahPolicy()->record_phase_end(ShenandoahCollectorPolicy::resize_tlabs);
  74   }
  75 }
  76 
  77 const char* VM_ShenandoahFullGC::name() const {
  78   return "Shenandoah Full GC";
  79 }
  80 
  81 
  82 bool VM_ShenandoahReferenceOperation::doit_prologue() {
  83   _pending_list_locker.lock();
  84   return true;
  85 }
  86 
  87 void VM_ShenandoahReferenceOperation::doit_epilogue() {
  88   _pending_list_locker.unlock();
  89 }
  90 
  91 void VM_ShenandoahStartEvacuation::doit() {
  92 
  93   // We need to do the finish mark here, so that a JNI critical region
  94   // can't divide it from evacuation start. It is critical that we
  95   // evacuate roots right after finishing marking, so that we don't
  96   // get unmarked objects in the roots.
  97   ShenandoahHeap *sh = ShenandoahHeap::heap();
  98   if (! sh->cancelled_concgc()) {
  99     if (ShenandoahGCVerbose)
 100       tty->print("vm_ShenandoahFinalMark\n");
 101 
 102     GCTraceTime(Info, gc, phases) time("Pause Init-Evacuation", sh->gc_timer());
 103     sh->shenandoahPolicy()->record_phase_start(ShenandoahCollectorPolicy::final_mark);
 104     sh->concurrentMark()->finish_mark_from_roots();
 105     sh->stop_concurrent_marking();
 106     sh->shenandoahPolicy()->record_phase_end(ShenandoahCollectorPolicy::final_mark);
 107 
 108     sh->shenandoahPolicy()->record_phase_start(ShenandoahCollectorPolicy::prepare_evac);
 109     sh->prepare_for_concurrent_evacuation();
 110     sh->shenandoahPolicy()->record_phase_end(ShenandoahCollectorPolicy::prepare_evac);
 111 
 112     sh->set_evacuation_in_progress(true);
 113 
 114     // From here on, we need to update references.




  73     sh->shenandoahPolicy()->record_phase_end(ShenandoahCollectorPolicy::resize_tlabs);
  74   }
  75 }
  76 
  77 const char* VM_ShenandoahFullGC::name() const {
  78   return "Shenandoah Full GC";
  79 }
  80 
  81 
  82 bool VM_ShenandoahReferenceOperation::doit_prologue() {
  83   _pending_list_locker.lock();
  84   return true;
  85 }
  86 
  87 void VM_ShenandoahReferenceOperation::doit_epilogue() {
  88   _pending_list_locker.unlock();
  89 }
  90 
  91 void VM_ShenandoahStartEvacuation::doit() {
  92 
  93   // It is critical that we

  94   // evacuate roots right after finishing marking, so that we don't
  95   // get unmarked objects in the roots.
  96   ShenandoahHeap *sh = ShenandoahHeap::heap();
  97   if (! sh->cancelled_concgc()) {
  98     if (ShenandoahGCVerbose)
  99       tty->print("vm_ShenandoahFinalMark\n");
 100 
 101     GCTraceTime(Info, gc, phases) time("Pause Init-Evacuation", sh->gc_timer());
 102     sh->shenandoahPolicy()->record_phase_start(ShenandoahCollectorPolicy::final_mark);
 103     sh->concurrentMark()->finish_mark_from_roots();
 104     sh->stop_concurrent_marking();
 105     sh->shenandoahPolicy()->record_phase_end(ShenandoahCollectorPolicy::final_mark);
 106 
 107     sh->shenandoahPolicy()->record_phase_start(ShenandoahCollectorPolicy::prepare_evac);
 108     sh->prepare_for_concurrent_evacuation();
 109     sh->shenandoahPolicy()->record_phase_end(ShenandoahCollectorPolicy::prepare_evac);
 110 
 111     sh->set_evacuation_in_progress(true);
 112 
 113     // From here on, we need to update references.


< prev index next >