Re: [pypy-dev] [pypy-svn] r77083 - pypy/branch/jitffi

Hey anto. There was a SoC about that, I guess it would be good to chat about it at least (personally I think jitting rlib/libffi is exactly bad layer to be jitted and some experiments were done). Cheers, fijal On Wed, Sep 15, 2010 at 1:07 PM, <antocuni@codespeak.net> wrote:

Hi, On 15/09/10 18:18, Maciej Fijalkowski wrote:
yes, I read the code in the fast-ctypes branch but I wanted to take another (simpler) approach. Note that my goal is not only to speed up ctypes, but also to provide a useful building block for cppyy (the module to call c++ functions that we started at the cern sprint). My basic idea was to mark libffi.FuncPtr.{push_arg,call} in a special way, so that the backend can recognize the pattern (i.e. push* + call) and emit a single assembler call. I even started to write a bit of code, but then I realized that libffi.FuncPtr is not used at all, as _rawffi uses RawFuncPtr: the bad news is that RawFuncPtr uses a different interface, as it does not have push_arg but passes the arguments already packed in a list, so my easy solution above cannot work. Note however that doing it at the level of FuncPtr might still be useful for cppyy. Question: why does _rawffi use RawFuncPtr instead of FuncPtr? Would it be possible/easy/hard/whatever to switch to FuncPtr? ciao, Anto

Hi, On 15/09/10 18:18, Maciej Fijalkowski wrote:
yes, I read the code in the fast-ctypes branch but I wanted to take another (simpler) approach. Note that my goal is not only to speed up ctypes, but also to provide a useful building block for cppyy (the module to call c++ functions that we started at the cern sprint). My basic idea was to mark libffi.FuncPtr.{push_arg,call} in a special way, so that the backend can recognize the pattern (i.e. push* + call) and emit a single assembler call. I even started to write a bit of code, but then I realized that libffi.FuncPtr is not used at all, as _rawffi uses RawFuncPtr: the bad news is that RawFuncPtr uses a different interface, as it does not have push_arg but passes the arguments already packed in a list, so my easy solution above cannot work. Note however that doing it at the level of FuncPtr might still be useful for cppyy. Question: why does _rawffi use RawFuncPtr instead of FuncPtr? Would it be possible/easy/hard/whatever to switch to FuncPtr? ciao, Anto
participants (2)
-
Antonio Cuni
-
Maciej Fijalkowski