diff options
author | Richard Henderson <richard.henderson@linaro.org> | 2024-04-04 13:35:43 -1000 |
---|---|---|
committer | Richard Henderson <richard.henderson@linaro.org> | 2024-05-15 08:55:18 +0200 |
commit | 34e5e1dde5b9760936a6e2426f5ff0d55a0695b0 (patch) | |
tree | f40673b5cb1d8250690d594bf20b666011c5af64 /accel | |
parent | e763953a2445770bb5d1653d0c258dca5a6de5e2 (diff) |
plugins: Merge alloc_tcg_plugin_context into plugin_gen_tb_start
We don't need to allocate plugin context at startup,
we can wait until we actually use it.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'accel')
-rw-r--r-- | accel/tcg/plugin-gen.c | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/accel/tcg/plugin-gen.c b/accel/tcg/plugin-gen.c index b54494712a..54b08ffc9e 100644 --- a/accel/tcg/plugin-gen.c +++ b/accel/tcg/plugin-gen.c @@ -305,28 +305,32 @@ static void plugin_gen_inject(struct qemu_plugin_tb *plugin_tb) bool plugin_gen_tb_start(CPUState *cpu, const DisasContextBase *db) { - bool ret = false; + struct qemu_plugin_tb *ptb; - if (test_bit(QEMU_PLUGIN_EV_VCPU_TB_TRANS, cpu->plugin_state->event_mask)) { - struct qemu_plugin_tb *ptb = tcg_ctx->plugin_tb; + if (!test_bit(QEMU_PLUGIN_EV_VCPU_TB_TRANS, + cpu->plugin_state->event_mask)) { + return false; + } + + tcg_ctx->plugin_db = db; + tcg_ctx->plugin_insn = NULL; + ptb = tcg_ctx->plugin_tb; - /* reset callbacks */ + if (ptb) { + /* Reset callbacks */ if (ptb->cbs) { g_array_set_size(ptb->cbs, 0); } ptb->n = 0; - - ret = true; - ptb->mem_helper = false; - - tcg_gen_plugin_cb(PLUGIN_GEN_FROM_TB); + } else { + ptb = g_new0(struct qemu_plugin_tb, 1); + tcg_ctx->plugin_tb = ptb; + ptb->insns = g_ptr_array_new(); } - tcg_ctx->plugin_db = db; - tcg_ctx->plugin_insn = NULL; - - return ret; + tcg_gen_plugin_cb(PLUGIN_GEN_FROM_TB); + return true; } void plugin_gen_insn_start(CPUState *cpu, const DisasContextBase *db) |