src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp
changeset 58674 42a3a8941418
parent 58580 adbd1504c998
child 58676 92e7d617897e
equal deleted inserted replaced
58673:06cc25fe0ca3 58674:42a3a8941418
  1900   }
  1900   }
  1901   ShenandoahBarrierSet::satb_mark_queue_set().set_active_all_threads(in_progress, !in_progress);
  1901   ShenandoahBarrierSet::satb_mark_queue_set().set_active_all_threads(in_progress, !in_progress);
  1902 }
  1902 }
  1903 
  1903 
  1904 void ShenandoahHeap::set_concurrent_traversal_in_progress(bool in_progress) {
  1904 void ShenandoahHeap::set_concurrent_traversal_in_progress(bool in_progress) {
  1905    set_gc_state_mask(TRAVERSAL | HAS_FORWARDED | UPDATEREFS, in_progress);
  1905    set_gc_state_mask(TRAVERSAL, in_progress);
  1906    ShenandoahBarrierSet::satb_mark_queue_set().set_active_all_threads(in_progress, !in_progress);
  1906    ShenandoahBarrierSet::satb_mark_queue_set().set_active_all_threads(in_progress, !in_progress);
  1907 }
  1907 }
  1908 
  1908 
  1909 void ShenandoahHeap::set_evacuation_in_progress(bool in_progress) {
  1909 void ShenandoahHeap::set_evacuation_in_progress(bool in_progress) {
  1910   assert(ShenandoahSafepoint::is_at_shenandoah_safepoint(), "Only call this at safepoint");
  1910   assert(ShenandoahSafepoint::is_at_shenandoah_safepoint(), "Only call this at safepoint");
  2058   stw_process_weak_roots(full_gc);
  2058   stw_process_weak_roots(full_gc);
  2059   stw_unload_classes(full_gc);
  2059   stw_unload_classes(full_gc);
  2060 }
  2060 }
  2061 
  2061 
  2062 void ShenandoahHeap::set_has_forwarded_objects(bool cond) {
  2062 void ShenandoahHeap::set_has_forwarded_objects(bool cond) {
  2063   set_gc_state_mask(HAS_FORWARDED, cond);
  2063   if (is_traversal_mode()) {
       
  2064     set_gc_state_mask(HAS_FORWARDED | UPDATEREFS, cond);
       
  2065   } else {
       
  2066     set_gc_state_mask(HAS_FORWARDED, cond);
       
  2067   }
       
  2068 
  2064 }
  2069 }
  2065 
  2070 
  2066 void ShenandoahHeap::set_process_references(bool pr) {
  2071 void ShenandoahHeap::set_process_references(bool pr) {
  2067   _process_references.set_cond(pr);
  2072   _process_references.set_cond(pr);
  2068 }
  2073 }