From 4fc531f71b139560b94c26f13799948990366183 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Mon, 15 Apr 2019 05:28:41 -0400 Subject: [PATCH] ir/basic_block: Forward declare headers where applicable Now that the constructor and destructors have been placed within the cpp file, we can forward declare the memory pool data structures. Now, a change to the memory pool code won't ripple across the entirety of the IR emitter. --- src/frontend/ir/basic_block.cpp | 4 +++- src/frontend/ir/basic_block.h | 9 ++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/frontend/ir/basic_block.cpp b/src/frontend/ir/basic_block.cpp index 086d672d..02c6ce00 100644 --- a/src/frontend/ir/basic_block.cpp +++ b/src/frontend/ir/basic_block.cpp @@ -13,15 +13,17 @@ #include #include "common/assert.h" +#include "common/memory_pool.h" #include "frontend/A32/types.h" #include "frontend/A64/types.h" #include "frontend/ir/basic_block.h" +#include "frontend/ir/cond.h" #include "frontend/ir/opcodes.h" namespace Dynarmic::IR { Block::Block(const LocationDescriptor& location) - : location{location}, end_location{location}, + : location{location}, end_location{location}, cond{Cond::AL}, instruction_alloc_pool{std::make_unique(sizeof(Inst), 4096)} {} Block::~Block() = default; diff --git a/src/frontend/ir/basic_block.h b/src/frontend/ir/basic_block.h index eb27fd4d..ca91aacc 100644 --- a/src/frontend/ir/basic_block.h +++ b/src/frontend/ir/basic_block.h @@ -13,15 +13,18 @@ #include "common/common_types.h" #include "common/intrusive_list.h" -#include "common/memory_pool.h" -#include "frontend/ir/cond.h" #include "frontend/ir/location_descriptor.h" #include "frontend/ir/microinstruction.h" #include "frontend/ir/terminal.h" #include "frontend/ir/value.h" +namespace Dynarmic::Common { +class Pool; +} + namespace Dynarmic::IR { +enum class Cond; enum class Opcode; /** @@ -142,7 +145,7 @@ private: /// Description of the end location of this block LocationDescriptor end_location; /// Conditional to pass in order to execute this block - Cond cond = Cond::AL; + Cond cond; /// Block to execute next if `cond` did not pass. std::optional cond_failed = {}; /// Number of cycles this block takes to execute if the conditional fails.