Author: Maciej Fijalkowski <fij...@gmail.com> Branch: fast-slowpath Changeset: r65592:36e01240d91f Date: 2013-07-24 10:46 +0200 http://bitbucket.org/pypy/pypy/changeset/36e01240d91f/
Log: cargo-cult until the rtyping passes - I have no clue what I'm doing diff --git a/rpython/annotator/specialize.py b/rpython/annotator/specialize.py --- a/rpython/annotator/specialize.py +++ b/rpython/annotator/specialize.py @@ -332,7 +332,7 @@ key = key + key1 return funcdesc.cachedgraph(key, builder=builder) -def _get_key(args_s, argindices): +def specialize_argvalue(funcdesc, args_s, *argindices): from rpython.annotator.model import SomePBC key = [] for i in argindices: @@ -347,9 +347,6 @@ raise Exception("specialize:arg(%d): argument not constant: %r" % (i, s)) key = tuple(key) - -def specialize_argvalue(funcdesc, args_s, *argindices): - key = _get_key(args_s, argindices) return maybe_star_args(funcdesc, key, args_s) def specialize_arg_or_var(funcdesc, args_s, *argindices): diff --git a/rpython/rlib/jit.py b/rpython/rlib/jit.py --- a/rpython/rlib/jit.py +++ b/rpython/rlib/jit.py @@ -1022,7 +1022,8 @@ 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() + args_v[1] = hop.args_r[1].get_concrete_llfn(hop.args_s[1], + hop.args_s[2:], hop.spaceop) hop.exception_is_here() return hop.genop('jit_conditional_call', args_v) diff --git a/rpython/rtyper/rpbc.py b/rpython/rtyper/rpbc.py --- a/rpython/rtyper/rpbc.py +++ b/rpython/rtyper/rpbc.py @@ -302,6 +302,18 @@ llfn = self.rtyper.getcallable(graph) return inputconst(typeOf(llfn), llfn) + def get_concrete_llfn(self, s_pbc, args_s, op): + bk = self.rtyper.annotator.bookkeeper + descs = list(s_pbc.descriptions) + vfcs = description.FunctionDesc.variant_for_call_site + args = bk.build_args("simple_call", args_s) + shape, index = vfcs(bk, self.callfamily, descs, args, op) + funcdesc, = descs + row_of_one_graph = self.callfamily.calltables[shape][index] + graph = row_of_one_graph[funcdesc] + llfn = self.rtyper.getcallable(graph) + return inputconst(typeOf(llfn), llfn) + def rtype_simple_call(self, hop): return self.call('simple_call', hop) _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit