Profile stores, fp stores and ps stores only to the fifo write addresses list. This should make the JIT a little faster as it will not be checking for external exceptions unnecessarily.

This commit is contained in:
skidau 2013-02-16 13:54:58 +11:00
parent 9bff8e00c8
commit 0c882cca66
1 changed files with 9 additions and 4 deletions

View File

@ -98,7 +98,11 @@ void STACKALIGN CheckGatherPipe()
memmove(m_gatherPipe, m_gatherPipe + cnt, m_gatherPipeCount); memmove(m_gatherPipe, m_gatherPipe + cnt, m_gatherPipeCount);
// Profile where the FIFO writes are occurring. // Profile where the FIFO writes are occurring.
if (jit && (jit->js.fifoWriteAddresses.find(PC)) == (jit->js.fifoWriteAddresses.end())) if (jit && PC != 0 && (jit->js.fifoWriteAddresses.find(PC)) == (jit->js.fifoWriteAddresses.end()))
{
// Log only stores, fp stores and ps stores, filtering out other instructions arrived via optimizeGatherPipe
int type = GetOpInfo(Memory::ReadUnchecked_U32(PC))->type;
if (type == OPTYPE_STORE || type == OPTYPE_STOREFP || (type == OPTYPE_PS && GetOpInfo(Memory::ReadUnchecked_U32(PC))->opname=="psq_st"))
{ {
jit->js.fifoWriteAddresses.insert(PC); jit->js.fifoWriteAddresses.insert(PC);
@ -107,6 +111,7 @@ void STACKALIGN CheckGatherPipe()
} }
} }
} }
}
void Write8(const u8 _iValue, const u32 _iAddress) void Write8(const u8 _iValue, const u32 _iAddress)
{ {