RFR: Print mark word in asserts

Aleksey Shipilev shade at redhat.com
Wed May 15 14:23:24 UTC 2019


This is useful for debugging failures with nofwdptr patch. So this is destined to sh/jdk:

diff -r 50d6ac06b5a9 src/hotspot/share/gc/shenandoah/shenandoahAsserts.cpp
--- a/src/hotspot/share/gc/shenandoah/shenandoahAsserts.cpp     Tue May 14 20:16:20 2019 +0200
+++ b/src/hotspot/share/gc/shenandoah/shenandoahAsserts.cpp     Wed May 15 16:22:10 2019 +0200
@@ -60,6 +60,9 @@
   stringStream ss;
   r->print_on(&ss);

+  stringStream mw_ss;
+  obj->mark()->print_on(&mw_ss);
+
   ShenandoahMarkingContext* const ctx = heap->marking_context();

   msg.append("  " PTR_FORMAT " - klass " PTR_FORMAT " %s\n", p2i(obj), p2i(obj->klass()),
obj->klass()->external_name());
@@ -69,6 +72,7 @@
   if (heap->traversal_gc() != NULL) {
     msg.append("    %3s in traversal set\n",
heap->traversal_gc()->traversal_set()->is_in((HeapWord*) obj) ? "" : "not");
   }
+  msg.append("  mark:%s\n", mw_ss.as_string());
   msg.append("  region: %s", ss.as_string());
 }

Testing: hotspot_gc_shenandoah, eyeballing failures

-- 
Thanks,
-Aleksey



More information about the shenandoah-dev mailing list