diff --git a/Source/Core/Core/DSP/Jit/DSPEmitter.cpp b/Source/Core/Core/DSP/Jit/DSPEmitter.cpp index 4f46d36b53..b68b8e33ea 100644 --- a/Source/Core/Core/DSP/Jit/DSPEmitter.cpp +++ b/Source/Core/Core/DSP/Jit/DSPEmitter.cpp @@ -4,6 +4,7 @@ #include "Core/DSP/Jit/DSPEmitter.h" +#include #include #include "Common/Assert.h" @@ -22,14 +23,10 @@ using namespace Gen; -DSPEmitter::DSPEmitter() +DSPEmitter::DSPEmitter() : blockLinks(MAX_BLOCKS), blockSize(MAX_BLOCKS), blocks(MAX_BLOCKS) { AllocCodeSpace(COMPILED_CODE_SIZE); - blocks = new DSPCompiledCode[MAX_BLOCKS]; - blockLinks = new Block[MAX_BLOCKS]; - blockSize = new u16[MAX_BLOCKS]; - compileSR = 0; compileSR |= SR_INT_ENABLE; compileSR |= SR_EXT_INT_ENABLE; @@ -37,20 +34,12 @@ DSPEmitter::DSPEmitter() CompileDispatcher(); stubEntryPoint = CompileStub(); - // clear all of the block references - for (int i = 0x0000; i < MAX_BLOCKS; i++) - { - blocks[i] = (DSPCompiledCode)stubEntryPoint; - blockLinks[i] = nullptr; - blockSize[i] = 0; - } + // Clear all of the block references + std::fill(blocks.begin(), blocks.end(), (DSPCompiledCode)stubEntryPoint); } DSPEmitter::~DSPEmitter() { - delete[] blocks; - delete[] blockLinks; - delete[] blockSize; FreeCodeSpace(); } @@ -408,7 +397,7 @@ void DSPEmitter::CompileDispatcher() // Execute block. Cycles executed returned in EAX. MOVZX(64, 16, ECX, M(&g_dsp.pc)); - MOV(64, R(RBX), ImmPtr(blocks)); + MOV(64, R(RBX), ImmPtr(blocks.data())); JMPptr(MComplex(RBX, RCX, SCALE_8, 0)); returnDispatcher = GetCodePtr(); diff --git a/Source/Core/Core/DSP/Jit/DSPEmitter.h b/Source/Core/Core/DSP/Jit/DSPEmitter.h index c6951f7829..3db25eef1a 100644 --- a/Source/Core/Core/DSP/Jit/DSPEmitter.h +++ b/Source/Core/Core/DSP/Jit/DSPEmitter.h @@ -5,6 +5,7 @@ #pragma once #include +#include #include "Common/x64ABI.h" #include "Common/x64Emitter.h" @@ -243,14 +244,14 @@ public: const u8* returnDispatcher; u16 compilePC; u16 startAddr; - Block* blockLinks; - u16* blockSize; + std::vector blockLinks; + std::vector blockSize; std::list unresolvedJumps[MAX_BLOCKS]; DSPJitRegCache gpr{*this}; private: - DSPCompiledCode* blocks; + std::vector blocks; Block blockLinkEntry; u16 compileSR;