* bugfix of problems with profile code which clobbers some registers

This commit is contained in:
carl 2002-12-03 22:13:39 +00:00
parent 7117075514
commit 6e46f3424c

View File

@ -1234,6 +1234,20 @@ function returns in a register and the caller receives it in an other one}
code, since temp. allocation might occur before - carl
}
{ for the save all registers we can simply use a pusha,popa which
push edi,esi,ebp,esp(ignored),ebx,edx,ecx,eax }
if (po_saveregisters in aktprocdef.procoptions) then
cg.g_save_all_registers(list)
else
{ should we save edi,esi,ebx like C ? }
if (po_savestdregs in aktprocdef.procoptions) then
cg.g_save_standard_registers(list,aktprocdef.usedregisters);
{ the actual profile code can clobber some registers,
therefore if the context must be saved, do it before
the actual call to the profile code
}
if (cs_profile in aktmoduleswitches)
and not(po_assembler in aktprocdef.procoptions)
and not(inlined) then
@ -1247,14 +1261,6 @@ function returns in a register and the caller receives it in an other one}
cg.g_profilecode(list);
end;
{ for the save all registers we can simply use a pusha,popa which
push edi,esi,ebp,esp(ignored),ebx,edx,ecx,eax }
if (po_saveregisters in aktprocdef.procoptions) then
cg.g_save_all_registers(list)
else
{ should we save edi,esi,ebx like C ? }
if (po_savestdregs in aktprocdef.procoptions) then
cg.g_save_standard_registers(list,aktprocdef.usedregisters);
{ a constructor needs a help procedure }
if (aktprocdef.proctypeoption=potype_constructor) then
@ -1896,7 +1902,10 @@ function returns in a register and the caller receives it in an other one}
end.
{
$Log$
Revision 1.68 2002-12-01 22:06:59 carl
Revision 1.69 2002-12-03 22:13:39 carl
* bugfix of problems with profile code which clobbers some registers
Revision 1.68 2002/12/01 22:06:59 carl
* warning of portabilitiy problems with parasize / localsize
Revision 1.67 2002/11/30 18:44:57 carl