RFR: Incorrect conditional matrix cleanup in SHMatrix::clean_batched

Aleksey Shipilev shade at redhat.com
Fri May 12 14:43:30 UTC 2017


Hi,

Zhengyu found this embarrassing bug introduced by me:

diff -r e0ac01d9dae2 src/share/vm/gc/shenandoah/shenandoahConnectionMatrix.cpp
--- a/src/share/vm/gc/shenandoah/shenandoahConnectionMatrix.cpp	Fri May 12
13:37:36 2017 +0200
+++ b/src/share/vm/gc/shenandoah/shenandoahConnectionMatrix.cpp	Fri May 12
16:30:50 2017 +0200
@@ -117,7 +117,7 @@
         size_t start = r * stride;
         for (size_t i = 0; i < count; i++) {
           size_t t = start + idxs[i];
-          if (matrix[t] == 0) {
+          if (matrix[t] != 0) {
             matrix[t] = 0;
           }
         }


This should not affect correctness though, because we "just" keep matrix way
more conservative than required.

Testing: hotspot_gc_shenandoah

Thanks,
-Aleksey



More information about the shenandoah-dev mailing list