JitCache: Return a pointer in GetBlockFromStartAddress.
This commit is contained in:
1 parent
f6ec96efbd
commit
d3aa8c8080
3 files changed
+25
-30
No files matched your search
@@ -168,34 +168,31 @@ int GetHostCode(u32* address, const u8** code, u32* code_size)
|
||||
return 1;
|
||||
}
|
||||
|
||||
int block_num = g_jit->GetBlockCache()->GetBlockNumberFromStartAddress(*address, MSR);
|
||||
if (block_num < 0)
|
||||
JitBlock* block = g_jit->GetBlockCache()->GetBlockFromStartAddress(*address, MSR);
|
||||
if (!block)
|
||||
{
|
||||
for (int i = 0; i < 500; i++)
|
||||
{
|
||||
block_num = g_jit->GetBlockCache()->GetBlockNumberFromStartAddress(*address - 4 * i, MSR);
|
||||
if (block_num >= 0)
|
||||
block = g_jit->GetBlockCache()->GetBlockFromStartAddress(*address - 4 * i, MSR);
|
||||
if (block)
|
||||
break;
|
||||
}
|
||||
|
||||
if (block_num >= 0)
|
||||
if (block)
|
||||
{
|
||||
JitBlock* block = g_jit->GetBlockCache()->GetBlock(block_num);
|
||||
if (!(block->effectiveAddress <= *address &&
|
||||
block->originalSize + block->effectiveAddress >= *address))
|
||||
block_num = -1;
|
||||
block = nullptr;
|
||||
}
|
||||
|
||||
// Do not merge this "if" with the above - block_num changes inside it.
|
||||
if (block_num < 0)
|
||||
if (!block)
|
||||
{
|
||||
*code_size = 0;
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
|
||||
JitBlock* block = g_jit->GetBlockCache()->GetBlock(block_num);
|
||||
|
||||
*code = block->checkedEntry;
|
||||
*code_size = block->codeSize;
|
||||
*address = block->effectiveAddress;
|
||||
|
||||
Reference in new issue
Block a user