RFR: Report Traversal status in heap sampling

Aleksey Shipilev shade at redhat.com
Wed Aug 15 16:16:14 UTC 2018


Trivial change to allow Visualizer capture Traversal-in-progress:

diff -r 004f55114c5f src/hotspot/share/gc/shenandoah/shenandoahHeapRegionCounters.cpp
--- a/src/hotspot/share/gc/shenandoah/shenandoahHeapRegionCounters.cpp  Wed Aug 15 17:52:58 2018 +0200
+++ b/src/hotspot/share/gc/shenandoah/shenandoahHeapRegionCounters.cpp  Wed Aug 15 18:14:55 2018 +0200
@@ -93,7 +93,8 @@
       ShenandoahHeap* heap = ShenandoahHeap::heap();
       jlong status = 0;
-      if (heap->is_concurrent_mark_in_progress()) status |= 1 << 0;
-      if (heap->is_evacuation_in_progress())   status |= 1 << 1;
-      if (heap->is_update_refs_in_progress())  status |= 1 << 2;
+      if (heap->is_concurrent_mark_in_progress())      status |= 1 << 0;
+      if (heap->is_evacuation_in_progress())           status |= 1 << 1;
+      if (heap->is_update_refs_in_progress())          status |= 1 << 2;
+      if (heap->is_concurrent_traversal_in_progress()) status |= 1 << 3;
       _status->set_value(status);

diff -r 004f55114c5f src/hotspot/share/gc/shenandoah/shenandoahHeapRegionCounters.hpp
--- a/src/hotspot/share/gc/shenandoah/shenandoahHeapRegionCounters.hpp  Wed Aug 15 17:52:58 2018 +0200
+++ b/src/hotspot/share/gc/shenandoah/shenandoahHeapRegionCounters.hpp  Wed Aug 15 18:14:55 2018 +0200
@@ -40,4 +40,5 @@
  *     - bit 1 set when evacuation in progress
  *     - bit 2 set when update refs in progress
+ *     - bit 3 set when traversal in progress
  *
  * two variable counters per region, with $max_regions (see above) counters:

Testing: eyeballing Visualizer

Thanks,
-Aleksey



More information about the shenandoah-dev mailing list