RFR: FTS/LTS timestamps garble the hs_err

Aleksey Shipilev shade at redhat.com
Tue Aug 1 15:25:30 UTC 2017


That happens because "%8lf" takes 6 characters after decimal point on my machine. Which means
two-digit seconds start to overflow. Solution:

$ hg diff
diff -r b0d726d962fc src/share/vm/gc/shenandoah/shenandoahHeap.cpp
--- a/src/share/vm/gc/shenandoah/shenandoahHeap.cpp	Tue Aug 01 14:49:57 2017 +0200
+++ b/src/share/vm/gc/shenandoah/shenandoahHeap.cpp	Tue Aug 01 17:24:07 2017 +0200
@@ -934,6 +934,7 @@
                        "HS=humongous(starts), HC=humongous(continuation),");
   st->print_cr("CS=collection set, R=root, CP=critical pins, "
                        "TAMS=top-at-mark-start (previous, next)");
+  st->print_cr("FTS=first use timestamp, LTS=last use timestamp");

   _ordered_regions->print(st);
 }
diff -r b0d726d962fc src/share/vm/gc/shenandoah/shenandoahHeapRegion.cpp
--- a/src/share/vm/gc/shenandoah/shenandoahHeapRegion.cpp	Tue Aug 01 14:49:57 2017 +0200
+++ b/src/share/vm/gc/shenandoah/shenandoahHeapRegion.cpp	Tue Aug 01 17:24:07 2017 +0200
@@ -146,8 +146,8 @@
   st->print("|G %3d%%", (int) ((double) get_gclab_allocs() * 100 / capacity()));
   st->print("|S %3d%%", (int) ((double) get_shared_allocs() * 100 / capacity()));
   st->print("|L %3d%%", (int) ((double) get_live_data_bytes() * 100 / capacity()));
-  st->print("|FTS %8lf",  first_timestamp());
-  st->print("|LTS %8lf",  last_timestamp());
+  st->print("|FTS %10.3lf", first_timestamp());
+  st->print("|LTS %10.3lf", last_timestamp());
   if (is_humongous_start()) {
     st->print("|H ");
   } else if (is_humongous_continuation()) {


Thanks,
-Aleksey



More information about the shenandoah-dev mailing list