Re: [fpc-devel] Passing parameters through the stack to interfaces

2010-08-05 Thread Hans-Peter Diettrich
Joost van der Sluis schrieb: It seems like that when you call a method of an interface, a 'hidden' wrapper is generated by the compiler to adjust the 'self' parameter so that it does not refers to the interface-pointer, but the actual class-pointer. This is common practice, also in C++. The

Re: [fpc-devel] Passing parameters through the stack to interfaces

2010-08-05 Thread Joost van der Sluis
On Thu, 2010-08-05 at 16:01 +0200, Jonas Maebe wrote: > On 05 Aug 2010, at 15:18, Joost van der Sluis wrote: > > > 1: replace the 'call' in the wrapper with a 'jmp'. I've tried this and > > it works, but when the function returns, the 'self'-class-pointer is > > not > > converted to the interfac

Re: [fpc-devel] Passing parameters through the stack to interfaces

2010-08-05 Thread Joost van der Sluis
On Thu, 2010-08-05 at 17:36 +0400, Sergei Gorelkin wrote: > Joost van der Sluis пишет: > > ... > > I don't know what's the best way to fix this. > > 2: See if we can let the caller do the > > interface-pointer-to-class-pointer conversion. That way the wrapper is > > not necessary anymore. Leads to

Re: [fpc-devel] Passing parameters through the stack to interfaces

2010-08-05 Thread Jonas Maebe
On 05 Aug 2010, at 15:18, Joost van der Sluis wrote: 1: replace the 'call' in the wrapper with a 'jmp'. I've tried this and it works, but when the function returns, the 'self'-class-pointer is not converted to the interface-pointer. But I don't see why this is done in the first place?!?

Re: [fpc-devel] Passing parameters through the stack to interfaces

2010-08-05 Thread Sergei Gorelkin
Joost van der Sluis пишет: ... I don't know what's the best way to fix this. I see three solutions: 1: replace the 'call' in the wrapper with a 'jmp'. I've tried this and it works, but when the function returns, the 'self'-class-pointer is not converted to the interface-pointer. But I don't see

[fpc-devel] Passing parameters through the stack to interfaces

2010-08-05 Thread Joost van der Sluis
Hi all, It seems like that when you call a method of an interface, a 'hidden' wrapper is generated by the compiler to adjust the 'self' parameter so that it does not refers to the interface-pointer, but the actual class-pointer. The problem is only that the extra 'call' which is made adds one ext