RFR: Slowdebug build failed after "Refactor and improve ShenandoahCodeRoots strategies"

Aleksey Shipilev shade at redhat.com
Thu May 31 12:32:32 UTC 2018


Current assert works by sheer luck. It compares oop*, not oop, and so it mismatches the signature of
unsafe_equals in slowdebug:

diff -r 0adcdbbca5cd src/hotspot/share/gc/shenandoah/shenandoahCodeRoots.cpp
--- a/src/hotspot/share/gc/shenandoah/shenandoahCodeRoots.cpp	Thu May 31 12:29:14 2018 +0200
+++ b/src/hotspot/share/gc/shenandoah/shenandoahCodeRoots.cpp	Thu May 31 14:25:02 2018 +0200
@@ -293,7 +293,7 @@
 void ShenandoahNMethod::assert_same_oops(GrowableArray<oop*>* oops) {
   assert(_oops_count == oops->length(), "should have the same number of oop*");
   for (int c = 0; c < _oops_count; c++) {
-    assert(oopDesc::unsafe_equals(_oops[c], oops->at(c)), "should be the same oop*");
+    assert(_oops[c] == oops->at(c), "should be the same oop*");
   }
 }
 #endif

Testing: {release, fastdebug, slowdebug} builds

Thanks,
-Aleksey



More information about the shenandoah-dev mailing list