[pypy-dev] do I need hlinvoke?

Christian Tismer tismer at stackless.com
Wed Mar 29 21:07:04 CEST 2006


Armin Rigo wrote:
> Hi Christian,
> 
> There is something wrong whenever anyone is getting close to hlinvoke()
> :-)

Well, I asked him specifically, because he knows what I'm doing.

> I don't understand your problem well enough (and will let Samuele answer
> if my answer is not sufficient), but:
> 
> On Wed, Mar 29, 2006 at 12:11:48AM -0800, Christian Tismer wrote:
>> In the real implementation, I don't have this chance,
>> because convert_from_to is an rtyper function, and I can't call
>> something high level that does it for me.
> 
> What prevents you from writing the function you want to call as a
> low-level helper?

Because I have two code branches which both need to be rtyped.
Right now I have rtyye_wrap_object_create which creates a wrapper,
and rtype_wrap_object_fetch which grabs an existing one.

They both need rtyping. So I wrote one normal function
which calls them both, like

def wrap_obj(thing):
     res = fetch_pywrapper(thing)
     if res is None:
         res= create_pywrapper(thing)
     return res

I want to call this function in the convert operation.
both helper functions need rtyping. At least I cannot see
how to express things like gencapicall from an ll function?

> Then use the regular llops.gendirectcall() to invoke
> it.  Low-level helpers are not prevented to contain branches and loops.
> If the answer is that calls to special-cased functions are not handled
> correctly then this is what we should try to solve.

I don't see how this would work.
If I write a ll function, then I have no rtyper any longer.
I need to work with the repr of my instances to see if
a special field is there, and create different code.
How can I get there *after* rtyping, that is my problem.
Or can I run an ll function through rtyping as well?

thanks - chris
-- 
Christian Tismer             :^)   <mailto:tismer at stackless.com>
tismerysoft GmbH             :     Have a break! Take a ride on Python's
Johannes-Niemeyer-Weg 9A     :    *Starship* http://starship.python.net/
14109 Berlin                 :     PGP key -> http://wwwkeys.pgp.net/
work +49 30 802 86 56  mobile +49 173 24 18 776  fax +49 30 80 90 57 05
PGP 0x57F3BF04       9064 F4E1 D754 C2FF 1619  305B C09C 5A3B 57F3 BF04
      whom do you want to sponsor today?   http://www.stackless.com/



More information about the Pypy-dev mailing list