[cfe-dev] Objective-C Code Generation

Chris Lattner clattner at apple.com
Mon Feb 25 13:34:20 PST 2008


On Feb 25, 2008, at 3:34 AM, David Chisnall wrote:

> On 25 Feb 2008, at 04:43, Chris Lattner wrote:
>
>> What specifically do you need to do?  In the next runtime, message
>> expressions are all pretty simple: they are llvm Function's with
>> internal linkage and names that contain the selector.  I assume you
>> would like to factor out the argument lowering code?  Is there
>> anything else?
>
> I'm talking about method definitions, rather than message sends.   
> These methods are implemented as functions with two hidden arguments  
> (id self and SEL _cmd on the GNU and NeXT runtimes, id self and  
> struct objc_call _call on the Étoilé runtime so, at some point,  
> factoring out the argument lowering code will be useful).  A pointer  
> to this function is then installed in the relevant objc_class  
> structure.  Obviously this last step will require some new code (and  
> be completely runtime-specific.  I think Apple have at least two  
> ways of doing it for their various runtimes), but generating the  
> function body ought to be possible with existing code (since  
> everything that's valid as an Objective-C method is also valid as a  
> function).
>
> The hidden parameters and the function name (I don't think any  
> existing runtimes rely on name mangling for lookup, but it's  
> possible a future one will) should probably be specified in some  
> runtime-specific code.  After this, it can be generated exactly as a  
> function would.

Ok, it sounds like factoring out the relevant functionality is the  
right way to go.  We'll eventually need very similar code for C++  
methods as well, which get a this pointer.

-Chris



More information about the cfe-dev mailing list