LLE JIT: Reworked the block linking code. It now keeps track of what each block is waiting on, minimising the amount of recompiling. Both jumps and calls can now become linked. The code also checks the cycle count before jumping to the linked block.

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6728 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
skidau
2011-01-03 10:39:48 +00:00
parent fea85945da
commit a6637c257f
4 changed files with 78 additions and 128 deletions

View File

@ -18,6 +18,8 @@
#ifndef _DSPEMITTER_H
#define _DSPEMITTER_H
#include <list>
#include "DSPCommon.h"
#include "x64Emitter.h"
@ -41,7 +43,7 @@ public:
void CompileDispatcher();
const u8 *CompileStub();
void Compile(int start_addr);
void Compile(u16 start_addr);
void ClearCallFlag();
void Default(UDSPInstruction inst);
@ -252,6 +254,7 @@ public:
u16 startAddr;
CompiledCode *blockLinks;
u16 *blockSize;
std::list<u16> unresolvedJumps[0x10000];
private:
CompiledCode *blocks;