[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: ANN: GNUstep 2.6.0 for openSUSE 11.4
From: |
Nat! |
Subject: |
Re: ANN: GNUstep 2.6.0 for openSUSE 11.4 |
Date: |
Wed, 15 Jun 2011 11:16:45 +0200 |
Am 15.06.2011 um 10:39 schrieb David Chisnall:
> On 14 Jun 2011, at 23:19, Nat! wrote:
>
>> Am 14.06.2011 um 23:47 schrieb David Chisnall:
>>
>>> On 14 Jun 2011, at 22:38, Nat! wrote:
>>>
>>>> Hmm interesting, though I don't see offhand, why dividing what
>>>> objc_msgSend does into separate steps makes it inherently more portable.
>>>> I will have to look into my code, to see if its feasible to roll my own
>>>> objc_msgSend, (because I use it a lot as I found out :) ).
>>>
>>> objc_msgSend() is a trampoline function. It must pass all of its arguments
>>> to the called IMP. This is not possible in C. Apple implements a version
>>> of it in assembly for every calling convention, for every architecture, and
>>> for every platform that they support (currently, this comes to about a
>>> dozen implementations, and they support a very narrow range of platforms
>>> compared to GNUstep).
>>>
>> Ah I see. I hope, that if I reduce the scope to a small fixed number of id
>> parameters, I can get by.
>
> It's really better to just call class_getMethodImplementation() and call the
> returning IMP. This code will work everywhere, and the performance
> difference between using it and using objc_msgSend() is tiny.
It's more of an experiment porting my stuff to GNUstep, so your advice
nonwithstanding I think my plan, will work, because I believe I only use it
objc_msgSend for simple calls (max. one or two id parameters and return value).
Otherwise I would have to change a lot of source.
>
>>>> Ah and one more question, regarding forwarding is __objc_msg_forward
>>>> (instead of __objc_msg_forward2) ever really used or can I ignore it, when
>>>> I run atop a current runtime ?
>>> The forwarding hooks that are used depend on the runtime. See
>>> GSFFIInvocation.m for how they are all used.
>>
>> Is there some exported #define (like OBJC_API_VERSION) that could be
>> checked, which runtime I am compiling against ?
>
> Not really. GCC 4.6 and later define something. The GNUstep Runtime defines
> __GNUSTEP_RUNTIME__ in objc/runtime.h and then provides a set of capability
> flags in objc/caps.h to let you check at compile time and run time which
> capabilities the runtime that you are using supports.
Hmm, this could indicate that I _do_ have the wrong set of headers. In
/usr/lib/gcc/i586-suse-linux/4.5/include/objc I neither see caps.h nor
runtime.h.
But it's not a big problem, for my experiments I can live without them.
>
>
> ... then you are almost certainly doing something very, very wrong.
>
Hey, I would prefer to think of it as almost certainly doing something very,
very clever :)
Thanks for all the help
Nat!
------------------------------------------------------
A good dog, though a fool.
Who wants a smart dog! -- R.A. Lafferty
- Re: ANN: GNUstep 2.6.0 for openSUSE 11.4, (continued)
Re: ANN: GNUstep 2.6.0 for openSUSE 11.4, Fred Kiefer, 2011/06/13
Re: ANN: GNUstep 2.6.0 for openSUSE 11.4, Nat!, 2011/06/14
- Re: ANN: GNUstep 2.6.0 for openSUSE 11.4, David Chisnall, 2011/06/14
- Re: ANN: GNUstep 2.6.0 for openSUSE 11.4, Nat!, 2011/06/14
- Re: ANN: GNUstep 2.6.0 for openSUSE 11.4, David Chisnall, 2011/06/14
- Re: ANN: GNUstep 2.6.0 for openSUSE 11.4, Nat!, 2011/06/14
- Re: ANN: GNUstep 2.6.0 for openSUSE 11.4, David Chisnall, 2011/06/15
- Re: ANN: GNUstep 2.6.0 for openSUSE 11.4,
Nat! <=
- Re: ANN: GNUstep 2.6.0 for openSUSE 11.4, David Chisnall, 2011/06/15
Re: ANN: GNUstep 2.6.0 for openSUSE 11.4, Richard Stonehouse, 2011/06/13
Re: ANN: GNUstep 2.6.0 for openSUSE 11.4, Richard Stonehouse, 2011/06/14