[fpc-devel] RTTI method paramlist broken?
Jonas Maebe
jonas.maebe at elis.ugent.be
Sat Sep 12 12:14:07 CEST 2009
On 12 Sep 2009, at 12:02, Mattias Gaertner wrote:
> On Sat, 12 Sep 2009 11:54:04 +0200
> Jonas Maebe <jonas.maebe at elis.ugent.be> wrote:
>
>> Previously, the order was reversed for non-i386 platforms depending
>> on the calling convention. Now it should always be correct, both for
>> i386 and for other architectures. Or do you mean that you now won't
>> reverse the order anymore for non-i386?
>
> Where is the calling convention in the RTTI stored?
I don't think it is stored anywhere (does Delphi specify whether e.g.
register or stdcall is used?). But you shouldn't need it for the
parameter order, because depending on whether the calling convention
specifies left-to-right or right-to-left pushing, the order of the
parameters in the rtti also changes. That's why tests/webtbs/
tw12038.pp contains stdcall for all methods, because otherwise I can't
use constant strings to check the results (since on i386, the default
calling convention pushes from left to right instead of from right to
left). This is at least Kylix-compatible.
Of course, the parameter order by itself is not enough to use this
information to call anything, since it does specify how the parameters
have to be passed (in registers, on the stack, whether the callee or
caller is responsible to clean up the stack, ...).
Or do you use this information only for display or code completion
purposes (so you always want the parameters in left-to-right order)?
In that case, I don't think that's possible with rtti.
Jonas
More information about the fpc-devel
mailing list