From b35cf7de0976f064d2c8d6a6350262a84b8223a9 Mon Sep 17 00:00:00 2001 From: SarahW Date: Fri, 22 Mar 2019 20:31:57 +0000 Subject: [PATCH] Fix codegen timing flush at end of a block. --- src/codegen_backend.c | 1 + src/codegen_timing_k6.c | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/src/codegen_backend.c b/src/codegen_backend.c index 0f76cbe..106b896 100644 --- a/src/codegen_backend.c +++ b/src/codegen_backend.c @@ -793,6 +793,7 @@ void codegen_block_end() void codegen_block_end_recompile(codeblock_t *block) { codegen_timing_block_end(); + codegen_accumulate(ACCREG_cycles, -codegen_block_cycles); if (block->flags & CODEBLOCK_IN_DIRTY_LIST) block_dirty_list_remove(block); diff --git a/src/codegen_timing_k6.c b/src/codegen_timing_k6.c index 8499cfa..518a565 100644 --- a/src/codegen_timing_k6.c +++ b/src/codegen_timing_k6.c @@ -2339,7 +2339,11 @@ void codegen_timing_k6_opcode(uint8_t opcode, uint32_t fetchdat, int op_32, uint void codegen_timing_k6_block_end() { if (decode_buffer.nr_uops) + { + int old_last_complete_timestamp = last_complete_timestamp; decode_flush(); + codegen_block_cycles += (last_complete_timestamp - old_last_complete_timestamp); + } } int codegen_timing_k6_jump_cycles()