Author: Armin Rigo <ar...@tunes.org> Branch: fast-slowpath Changeset: r65543:bf22340c9ecd Date: 2013-07-23 11:33 +0200 http://bitbucket.org/pypy/pypy/changeset/bf22340c9ecd/
Log: In get_unique_llfn(), ignore the "non-simple" calls and pick the one call which is a simple call. diff --git a/rpython/rlib/jit.py b/rpython/rlib/jit.py --- a/rpython/rlib/jit.py +++ b/rpython/rlib/jit.py @@ -1021,8 +1021,9 @@ def specialize_call(self, hop): from rpython.rtyper.lltypesystem import lltype + args_v = hop.inputargs(lltype.Bool, lltype.Void, *hop.args_r[2:]) + args_v[1] = hop.args_r[1].get_unique_llfn() hop.exception_is_here() - args_v = hop.inputargs(lltype.Bool, lltype.Void, *hop.args_r[2:]) return hop.genop('jit_conditional_call', args_v) class Counters(object): diff --git a/rpython/rtyper/rpbc.py b/rpython/rtyper/rpbc.py --- a/rpython/rtyper/rpbc.py +++ b/rpython/rtyper/rpbc.py @@ -283,9 +283,13 @@ assert len(self.s_pbc.descriptions) == 1 # lowleveltype wouldn't be Void otherwise funcdesc, = self.s_pbc.descriptions - if len(self.callfamily.calltables) != 1: + tables = [] # find the simple call in the calltable + for key, table in self.callfamily.calltables.items(): + if not key[1] and not key[2] and not key[3]: + tables.append(table) + if len(tables) != 1: raise TyperError("cannot pass a function with various call shapes") - table, = self.callfamily.calltables.values() + table, = tables graphs = [] for row in table: if funcdesc in row: _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit