On Feb 23, 2013, at 2:42 AM, Jean-Daniel Dupas <[email protected]> wrote:
> > Le 22 févr. 2013 à 22:56, Jim Ingham <[email protected]> a écrit : > >> >> On Feb 22, 2013, at 1:51 PM, Enrico Granata <[email protected]> wrote: >> >>> CallMethod is right for C++, but for ObjC it would be CallSelector. I don’t >>> think ObjC even has the notion of method in its lexicon. >> >> Yeah, the ObjC guys are pretty sloppy about their nomenclature (is it a >> method, is it a message...) And the selector defines the method, so I don't >> think you'd really need two calls. >> >>> >>> Also, dealing with the arguments is going to be tricky. >>> Problems I can see at a glance: >>> - how do you deal with each SBValue while making the string? expression >>> path? numeric value + a cast? neither way looks perfect at a glance >> >> I don't think you would make up a string. You would implement this lower >> down than that, where we are directly populating the "arguments structure" >> that we are going to call, a la the Clang Functions. And by the time we get >> there, we would have the method signature, so we'd know how to interpret the >> SBValues from the input arguments. >> >>> - for ObjC you need to also extract the “names of the arguments” (i.e. >>> foo:arg1 bar:arg2 baz:arg3), while in C++ (arg1,arg2,arg3) is enough >> >> Again, you would be consing up a call to objc_msgSend with the arguments >> passed directly, so that would not be an issue. > > If you go that route, you will have to take care of all the special cases > introduced by the ABI (i.e calling the right objc_msgSend variant depending > the arguments type and the return type). > Yes but that's actually not terribly difficult, there aren't all that many variants of objc_msgSend, and the decisions among them are not that complex. Jim > -- Jean-Daniel > > > > _______________________________________________ lldb-dev mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
