[cfe-dev] Objective-C Code Generation

David Chisnall csdavec at swansea.ac.uk
Mon Feb 25 03:34:15 PST 2008


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.

David



More information about the cfe-dev mailing list