On 04/28/2017 06:56 PM, Alex Bennée wrote:
Richard Henderson <r...@twiddle.net> writes:
From: "Emilio G. Cota" <c...@braap.org>
Instead of unconditionally exiting to the exec loop, use the
gen_jr helper to jump to the target if it is valid.
Perf impact: see next commit's log.
Reviewed-by: Richard Henderson <r...@twiddle.net>
Signed-off-by: Emilio G. Cota <c...@braap.org>
Message-Id: <1493263764-18657-10-git-send-email-c...@braap.org>
Signed-off-by: Richard Henderson <r...@twiddle.net>
---
target/i386/translate.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/target/i386/translate.c b/target/i386/translate.c
index f0e48dc..ea113fe 100644
--- a/target/i386/translate.c
+++ b/target/i386/translate.c
@@ -2154,9 +2154,9 @@ static inline void gen_goto_tb(DisasContext *s, int
tb_num, target_ulong eip)
gen_jmp_im(eip);
tcg_gen_exit_tb((uintptr_t)s->tb + tb_num);
} else {
- /* jump to another page: currently not optimized */
+ /* jump to another page */
gen_jmp_im(eip);
- gen_eob(s);
+ gen_jr(s, cpu_tmp0);
I had to look up what was going on with cpu_tmp0 there. Is there a
particular reason i386 has these global temps with implied setting
rules? It does seem somewhat hacky.
It's mostly hysterical raisins, and that no one has rewritten it yet.
Given cmp_tmp0 seems to be a heavily used across i386 I guess it keeps
to the style of the translator :-/
Yeah. :-/
r~