[fpc-devel] Re: Bug in revision 9781/2

Marc Weustink marc at dommelstein.net
Sat Jan 19 16:47:24 CET 2008


Daniƫl Mantione wrote:
> 
> 
> Op Sat, 19 Jan 2008, schreef Jonas Maebe:
> 
>>
>> On 19 Jan 2008, at 15:54, Peter Vreman wrote:
>>
>>> This call and pop is old-style PIC and not good for new cpus because 
>>> it breaks the call-stack. Please use the new style that calls a 
>>> function (fpc_geteipasebx). This also generated by the compiler. See 
>>> i386/cgcpu.pas and search for g_maybe_got_init.
>>
>> I recently read that on the more recent processors, call/pop is 
>> slightly faster again (I suppose they detect a call to next 
>> instruction and don't add it to the internal call stack or so).
>>
>> http://lists.apple.com/archives/perfoptimization-dev/2007/Nov/msg00005.html 
>>
> 
> Intel cpu's since Pentium M and AMD cpu's since Barcelona indeed have a 
> stack analyzer. I'm still going to switch back to the fpc_geteipasebx 
> helper since the extra call/ret penalty on those processors is small 
> while the penalty of a broken call stack is large.

Just for my information, this callstack, is it "tracked" by the CPU or 
generated by FPC. I somehow fail to see why a call&pop will affect the 
callstack in case it is generated.

Marc




More information about the fpc-devel mailing list