On 14 mrt 2005, at 11:11, [EMAIL PROTECTED] 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


_______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to