On 10/7/19 11:28 AM, Alex Bennée wrote: > diff --git a/accel/tcg/perf/jitdump.c b/accel/tcg/perf/jitdump.c > index e1d6f2214e..e7b86173e0 100644 > --- a/accel/tcg/perf/jitdump.c > +++ b/accel/tcg/perf/jitdump.c > @@ -146,7 +146,20 @@ void start_jitdump_file(void) > > void append_load_in_jitdump_file(TranslationBlock *tb) > { > - gchar *func_name = g_strdup_printf("TB virt:0x"TARGET_FMT_lx, tb->pc); > + g_autoptr(GString) func_name = g_string_new("TB virt:"); > + > + g_string_append_printf(func_name, "0x"TARGET_FMT_lx, tb->pc);
I think it was clearer as a single printf. Use g_string_printf(). But now I see where the missing GString went -- bad patch splitting. ;-) > + if (tb->tb_stats) { > + TBStatistics *tbs = tb->tb_stats; > + unsigned g = stat_per_translation(tbs, code.num_guest_inst); > + unsigned ops = stat_per_translation(tbs, code.num_tcg_ops); > + unsigned ops_opt = stat_per_translation(tbs, code.num_tcg_ops_opt); > + unsigned spills = stat_per_translation(tbs, code.spills); > + > + g_string_append_printf(func_name, " (g:%u op:%u opt:%u spills:%d)", > + g, ops, ops_opt, spills); > + } Oh, hum. Does it really make sense to have accumulated averages here? Why does it not make more sense to have the statistics about this particular TB? After all, different TB -- even for the same guest code -- will appear at different places within the code_gen_buffer, and so have different entries in this log. r~