[pypy-commit] pypy desc-specialize: fixes
rlamy
pypy.commits at gmail.com
Thu Feb 25 04:07:45 EST 2016
Author: Ronan Lamy <ronan.lamy at 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)
More information about the pypy-commit
mailing list