[fpc-devel] Local procedures as procedural parameter

Jonas Maebe jonas at zeus.ugent.be
Mon Mar 14 11:40:07 CET 2005


On 14 mrt 2005, at 11:11, olle.r at automagika.se wrote:

>> I would only see the use of being able to pass a local function as a
>> callback
>> if the called function can be used for both local and global callback
>> procedures.
>
> It can. When a global proc is passed, the static link is set to nil.

That is not possible, because the static link parameter is currently 
passed as an implicit hidden *first* parameter. If you start passing an 
extra first parameter with the value "nil" to procedures, you'll get 
all sorts of strange effects.

The PPC ABI actually prescribes that the static link parameter should 
always be passed in r11 (which can never be used for any other 
parameter, since regular parameters stop at r10), so then this works. 
However, in that respect we don't follow the PPC ABI, and it would also 
break on other processors so that's not an option.

The only possibility I see for this is to make the hidden static link 
parameter the last instead of the first parameter.


Jonas





More information about the fpc-devel mailing list