Hi Carl,

On Wed, Dec 14, 2005 at 11:40:23PM +0100, [EMAIL PROTECTED] wrote:
> Modified:
>    pypy/dist/pypy/translator/backendopt/inline.py
> Log:
> make functions that are called exactly once more likely to get inlined.

I'm concerned about functions that look like:

def _ll_list_resize_ge(l, newsize):
    if len(l.items) >= newsize:
        l.length = newsize
    else:
        _ll_list_resize_really(l, newsize)

It's a stub that we would like to see inlined in its many callers, but
the _ll_list_resize_really() should not be inlined.  With your new
weighting formula, it's likely that _ll_list_resize_really() would get
inlined into _ll_list_resize_ge() first, and then the intended effect is
lost.  (The example is not good because _ll_list_resize_really() is
actually called from two other places as well...  it's just an example).

Maybe it would be better to do two independent passes in
auto_inlining(): with the old formula, and then once again --
recomputing the callers/callees as well -- with the modified formula
favoring functions that are *still* called only once.


A bientot,

Armin
_______________________________________________
[email protected]
http://codespeak.net/mailman/listinfo/pypy-dev

Reply via email to