From cd9e228b6d237e46d130f6d346db72c5ec816ca6 Mon Sep 17 00:00:00 2001 From: SarahW Date: Sat, 16 Mar 2019 15:46:48 +0000 Subject: [PATCH] Move CODEBLOCK_IN_DIRTY_LIST check to after checking if block needs to be flushed. Improves performance in Eradicator. --- src/386_dynarec.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/386_dynarec.c b/src/386_dynarec.c index 2817727..d904612 100644 --- a/src/386_dynarec.c +++ b/src/386_dynarec.c @@ -341,14 +341,6 @@ void exec386_dynarec(int cycs) } } - if (valid_block && (block->flags & CODEBLOCK_IN_DIRTY_LIST)) - { - block->flags &= ~CODEBLOCK_WAS_RECOMPILED; - if (block->flags & CODEBLOCK_BYTE_MASK) - block->flags |= CODEBLOCK_NO_IMMEDIATES; - else - block->flags |= CODEBLOCK_BYTE_MASK; - } if (valid_block && (block->page_mask & *block->dirty_mask)) { codegen_check_flush(page, page->dirty_mask, phys_addr); @@ -379,6 +371,14 @@ void exec386_dynarec(int cycs) block->flags &= ~CODEBLOCK_WAS_RECOMPILED; } } + if (valid_block && (block->flags & CODEBLOCK_IN_DIRTY_LIST)) + { + block->flags &= ~CODEBLOCK_WAS_RECOMPILED; + if (block->flags & CODEBLOCK_BYTE_MASK) + block->flags |= CODEBLOCK_NO_IMMEDIATES; + else + block->flags |= CODEBLOCK_BYTE_MASK; + } if (valid_block && (block->flags & CODEBLOCK_WAS_RECOMPILED) && (block->flags & CODEBLOCK_STATIC_TOP) && block->TOP != (cpu_state.TOP & 7)) { /*FPU top-of-stack does not match the value this block was compiled