From: "Vanderson M. do Rosario" <vanderson...@gmail.com> Adding TBStatistics information to linux perf TB's symbol names.
Signed-off-by: Vanderson M. do Rosario <vanderson...@gmail.com> Message-Id: <20190830121903.17585-3-vanderson...@gmail.com> [AJB: fix authorship, auto-strings] Signed-off-by: Alex Bennée <alex.ben...@linaro.org> --- AJB: - use g_string and auto free --- accel/tcg/perf/jitdump.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) 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); + + 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); + } /* Serialise the writing of the dump file */ qemu_mutex_lock(&dumpfile_lock); @@ -167,7 +180,6 @@ void append_load_in_jitdump_file(TranslationBlock *tb) fwrite(func_name->str, func_name->len + 1, 1, dumpfile); fwrite(tb->tc.ptr, tb->tc.size, 1, dumpfile); - g_free(func_name); fflush(dumpfile); qemu_mutex_unlock(&dumpfile_lock); -- 2.20.1