Avoid needles store to temps before function call

This commit is contained in:
drmortalwombat 2021-10-31 19:37:54 +01:00
parent 135d357dbc
commit a52c869099

View File

@ -2023,21 +2023,21 @@ void NativeCodeInstruction::FilterRegUsage(NumberSet& requiredTemps, NumberSet&
// check runtime calls // check runtime calls
if (mType == ASMIT_JSR) if (mType == ASMIT_JSR)
{
if (mFlags & NCIF_RUNTIME)
{ {
for (int i = 0; i < 4; i++) for (int i = 0; i < 4; i++)
{ {
if (!providedTemps[BC_REG_ACCU + i]) if (!providedTemps[BC_REG_ACCU + i])
requiredTemps += BC_REG_ACCU + i; requiredTemps += BC_REG_ACCU + i;
providedTemps += BC_REG_ACCU + i;
if (!providedTemps[BC_REG_WORK + i]) if (!providedTemps[BC_REG_WORK + i])
requiredTemps += BC_REG_WORK + i; requiredTemps += BC_REG_WORK + i;
providedTemps += BC_REG_WORK + i;
if (!providedTemps[BC_REG_ADDR + i]) if (!providedTemps[BC_REG_ADDR + i])
requiredTemps += BC_REG_ADDR + i; requiredTemps += BC_REG_ADDR + i;
providedTemps += BC_REG_ADDR + i;
} }
}
if (!(mFlags & NCIF_RUNTIME)) else
{ {
if (mLinkerObject) if (mLinkerObject)
{ {
@ -2052,6 +2052,13 @@ void NativeCodeInstruction::FilterRegUsage(NumberSet& requiredTemps, NumberSet&
} }
} }
for (int i = 0; i < 4; i++)
{
providedTemps += BC_REG_ACCU + i;
providedTemps += BC_REG_WORK + i;
providedTemps += BC_REG_ADDR + i;
}
providedTemps += CPU_REG_A; providedTemps += CPU_REG_A;
providedTemps += CPU_REG_X; providedTemps += CPU_REG_X;
providedTemps += CPU_REG_Y; providedTemps += CPU_REG_Y;