On Thu, Jun 5, 2014 at 10:37 PM, Paul Moore <p.f.mo...@gmail.com> wrote: > On 5 June 2014 21:51, Nathaniel Smith <n...@pobox.com> wrote: >> Is there a better idea I'm missing? > > Just a thought, but the temporaries come from the stack manipulation > done by the likes of the BINARY_ADD opcode. (After all the bytecode > doesn't use temporaries, it's a stack machine). Maybe BINARY_ADD and > friends could allow for an alternative fast calling convention for > __add__implementations that uses the stack slots directly? This may be > something that's only plausible from C code, though. Or may not be > plausible at all. I haven't looked at ceval.c for many years... > > If this is an insane idea, please feel free to ignore me :-)
To make sure I understand correctly, you're suggesting something like adding a new set of special method slots, __te_add__, __te_mul__, etc., which BINARY_ADD and friends would check for and if found, dispatch to without going through PyNumber_Add? And this way, a type like numpy's array could have a special implementation for __te_add__ that works the same as __add__, except with the added wrinkle that it knows that it will only be called by the interpreter and thus any arguments with refcnt 1 must be temporaries? -n -- Nathaniel J. Smith Postdoctoral researcher - Informatics - University of Edinburgh http://vorpus.org _______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com