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


Reply via email to