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

View File

@ -98,7 +98,11 @@ void STACKALIGN CheckGatherPipe()
memmove(m_gatherPipe, m_gatherPipe + cnt, m_gatherPipeCount);
// 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);
@ -106,6 +110,7 @@ void STACKALIGN CheckGatherPipe()
jit->GetBlockCache()->InvalidateICache(PC, 4);
}
}
}
}
void Write8(const u8 _iValue, const u32 _iAddress)