Collect items like input and output code size, guest instruction count, intermediate ops, spills, etc.
Signed-off-by: Vanderson M. do Rosario <vanderson...@gmail.com> Signed-off-by: Alex Bennée <alex.ben...@linaro.org> Signed-off-by: Fei Wu <fei2...@intel.com> [rth: Consolidated at the end of translation.] Signed-off-by: Richard Henderson <richard.hender...@linaro.org> --- accel/tcg/translate-all.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/accel/tcg/translate-all.c b/accel/tcg/translate-all.c index 6e64ae2dbe..ad4538f169 100644 --- a/accel/tcg/translate-all.c +++ b/accel/tcg/translate-all.c @@ -557,6 +557,27 @@ TranslationBlock *tb_gen_code(CPUState *cpu, return tb; } + /* Record JIT statistics, if required. */ + if (unlikely(tb_stats_enabled & TB_STATS_JIT)) { + TBStatistics *s = tb->tb_stats; + if (s) { + s->code.num_tcg_ops += tcg_ctx->orig_nb_ops; + s->code.num_tcg_ops_opt += tcg_ctx->nb_ops; + s->code.temps += tcg_ctx->nb_temps; + s->code.deleted_ops += tcg_ctx->nb_deleted_ops; + s->code.spills += tcg_ctx->nb_spills; + + s->code.num_guest_inst += tb->icount; + s->code.in_len += tb->size; + s->code.out_len += tb->tc.size; + s->code.search_out_len += search_size; + s->translations.total += 1; + if (tb_page_addr1(tb) != -1) { + s->translations.spanning += 1; + } + } + } + /* * Insert TB into the corresponding region tree before publishing it * through QHT. Otherwise rewinding happened in the TB might fail to -- 2.34.1