Author: Ronan Lamy <ronan.l...@gmail.com> Branch: desc-specialize Changeset: r82491:aef099eea410 Date: 2016-02-25 10:06 +0100 http://bitbucket.org/pypy/pypy/changeset/aef099eea410/
Log: fixes diff --git a/pypy/module/cpyext/api.py b/pypy/module/cpyext/api.py --- a/pypy/module/cpyext/api.py +++ b/pypy/module/cpyext/api.py @@ -1295,7 +1295,7 @@ miniglobals = {'__name__': __name__, # for module name propagation } exec source.compile() in miniglobals - call_external_function = specialize.ll(miniglobals['cpy_call_external']) + call_external_function = specialize.ll()(miniglobals['cpy_call_external']) call_external_function._dont_inline_ = True call_external_function._gctransformer_hint_close_stack_ = True # don't inline, as a hack to guarantee that no GC pointer is alive diff --git a/rpython/annotator/description.py b/rpython/annotator/description.py --- a/rpython/annotator/description.py +++ b/rpython/annotator/description.py @@ -6,7 +6,7 @@ from rpython.annotator.argument import rawshape, ArgErr, simple_args from rpython.tool.sourcetools import valid_identifier from rpython.tool.pairtype import extendabletype -from rpython.annotator.model import AnnotatorError, s_ImpossibleValue +from rpython.annotator.model import AnnotatorError, s_ImpossibleValue, unionof class CallFamily(object): """A family of Desc objects that could be called from common call sites. @@ -116,7 +116,6 @@ self.s_value = s_ImpossibleValue # union of possible values def update(self, other): - from rpython.annotator.model import unionof self.descs.update(other.descs) self.read_locations.update(other.read_locations) self.s_value = unionof(self.s_value, other.s_value) @@ -303,7 +302,6 @@ # Some specializations may break the invariant of returning # annotations that are always more general than the previous time. # We restore it here: - from rpython.annotator.model import unionof result = unionof(result, s_previous_result) return result @@ -399,8 +397,9 @@ def pycall(self, whence, args, s_previous_result, op=None): inputcells = self.parse_arguments(args) s_result = self.specialize(inputcells, op) - assert not isinstance(s_result, FunctionGraph) - assert s_result.contains(s_previous_result) + if isinstance(s_result, FunctionGraph): + s_result = s_result.getreturnvar().annotation + s_result = unionof(s_result, s_previous_result) return s_result diff --git a/rpython/rtyper/lltypesystem/llmemory.py b/rpython/rtyper/lltypesystem/llmemory.py --- a/rpython/rtyper/lltypesystem/llmemory.py +++ b/rpython/rtyper/lltypesystem/llmemory.py @@ -377,7 +377,6 @@ def _sizeof_none(TYPE): assert not TYPE._is_varsize() return ItemOffset(TYPE) -_sizeof_none._annspecialcase_ = 'specialize:memo' @specialize.memo() def _internal_array_field(TYPE): diff --git a/rpython/rtyper/rpbc.py b/rpython/rtyper/rpbc.py --- a/rpython/rtyper/rpbc.py +++ b/rpython/rtyper/rpbc.py @@ -362,9 +362,9 @@ def get_concrete_llfn(self, s_pbc, args_s, op): bk = self.rtyper.annotator.bookkeeper funcdesc, = s_pbc.descriptions - args = simple_args(args_s) with bk.at_position(None): - graph = funcdesc.get_graph(args, op) + argspec = simple_args(args_s) + graph = funcdesc.get_graph(argspec, op) llfn = self.rtyper.getcallable(graph) return inputconst(typeOf(llfn), llfn) _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit