From 2c90fe2b71df2534884bce96d90cbfcc93aeedb8 Mon Sep 17 00:00:00 2001 From: Kirill Batuzov Date: Thu, 2 Dec 2010 16:12:46 +0300 Subject: Speedup 'tb_find_slow' by using the same heuristic as during memory page lookup Move the last found TB to the head of the list so it will be found more quickly next time it will be looked for. Signed-off-by: Kirill Batuzov Signed-off-by: Pavel Yushchenko Signed-off-by: Blue Swirl --- cpu-exec.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/cpu-exec.c b/cpu-exec.c index dbdfdcc..39e5eea 100644 --- a/cpu-exec.c +++ b/cpu-exec.c @@ -167,6 +167,12 @@ static TranslationBlock *tb_find_slow(target_ulong pc, tb = tb_gen_code(env, pc, cs_base, flags, 0); found: + /* Move the last found TB to the head of the list */ + if (likely(*ptb1)) { + *ptb1 = tb->phys_hash_next; + tb->phys_hash_next = tb_phys_hash[h]; + tb_phys_hash[h] = tb; + } /* we add the TB in the virtual pc hash table */ env->tb_jmp_cache[tb_jmp_cache_hash_func(pc)] = tb; return tb; -- cgit v1.1