Author: Maciej Fijalkowski <[email protected]>
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
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit