Author: Ronan Lamy <ronan.l...@gmail.com>
Branch: 
Changeset: r80969:3537a011647d
Date: 2015-11-25 23:16 +0000
http://bitbucket.org/pypy/pypy/changeset/3537a011647d/

Log:    Merge branch 'wrap-specialisation'

diff --git a/pypy/module/pypyjit/test_pypy_c/test_containers.py 
b/pypy/module/pypyjit/test_pypy_c/test_containers.py
--- a/pypy/module/pypyjit/test_pypy_c/test_containers.py
+++ b/pypy/module/pypyjit/test_pypy_c/test_containers.py
@@ -66,6 +66,7 @@
             guard_not_invalidated(descr=...)
             p10 = call_r(ConstClass(ll_str__IntegerR_SignedConst_Signed), i5, 
descr=<Callr . i EF=3>)
             guard_no_exception(descr=...)
+            guard_nonnull(p10, descr=...)
             i12 = call_i(ConstClass(ll_strhash), p10, descr=<Calli . r EF=0>)
             p13 = new(descr=...)
             p15 = new_array_clear(16, descr=<ArrayU 1>)
diff --git a/pypy/module/pypyjit/test_pypy_c/test_string.py 
b/pypy/module/pypyjit/test_pypy_c/test_string.py
--- a/pypy/module/pypyjit/test_pypy_c/test_string.py
+++ b/pypy/module/pypyjit/test_pypy_c/test_string.py
@@ -135,6 +135,7 @@
             guard_no_exception(descr=...)
             p95 = call_r(..., descr=<Callr . r EF=5>)     # ll_build
             guard_no_exception(descr=...)
+            guard_nonnull(p95, descr=...)
             i96 = strlen(p95)
             i97 = int_add_ovf(i71, i96)
             guard_no_overflow(descr=...)
@@ -250,6 +251,7 @@
         guard_not_invalidated(descr=...)
         p80 = call_r(ConstClass(ll_str__IntegerR_SignedConst_Signed), i47, 
descr=<Callr . i EF=3>)
         guard_no_exception(descr=...)
+        guard_nonnull(p80, descr=...)
         p53 = call_r(ConstClass(fast_str_decode_ascii), p80, descr=<Callr . r 
EF=4>)
         guard_no_exception(descr=...)
         guard_nonnull(p53, descr=...)
diff --git a/pypy/objspace/std/objspace.py b/pypy/objspace/std/objspace.py
--- a/pypy/objspace/std/objspace.py
+++ b/pypy/objspace/std/objspace.py
@@ -130,6 +130,7 @@
     def wrapbytes(self, x):
         return wrapstr(self, x)
 
+    @specialize.argtype(1)
     def wrap(self, x):
         "Wraps the Python value 'x' into one of the wrapper classes."
         # You might notice that this function is rather conspicuously
@@ -172,7 +173,6 @@
             else:
                 return W_LongObject.fromrarith_int(x)
         return self._wrap_not_rpython(x)
-    wrap._annspecialcase_ = "specialize:wrap"
 
     def _wrap_not_rpython(self, x):
         "NOT_RPYTHON"
diff --git a/pypy/tool/ann_override.py b/pypy/tool/ann_override.py
--- a/pypy/tool/ann_override.py
+++ b/pypy/tool/ann_override.py
@@ -1,16 +1,7 @@
 # overrides for annotation specific to PyPy codebase
 from rpython.annotator.policy import AnnotatorPolicy
 from rpython.flowspace.model import Constant
-from rpython.annotator import specialize
-from rpython.annotator.classdesc import InstanceSource, ClassDef
-
-
-
-def isidentifier(s):
-    if not s:
-        return False
-    s = s.replace('_', 'x')
-    return s[0].isalpha() and s.isalnum()
+from rpython.annotator.classdesc import InstanceSource
 
 
 class PyPyAnnotatorPolicy(AnnotatorPolicy):
@@ -19,37 +10,6 @@
         self.lookups_where = {}
         self.pypytypes = {}
 
-    def specialize__wrap(self,  funcdesc, args_s):
-        from pypy.interpreter.baseobjspace import W_Root
-        W_Root_def = funcdesc.bookkeeper.getuniqueclassdef(W_Root)
-        typ = args_s[1].knowntype
-        if isinstance(typ, ClassDef):
-            assert typ.issubclass(W_Root_def)
-            typ = W_Root
-        else:
-            assert not issubclass(typ, W_Root)
-            assert typ != tuple, "space.wrap(tuple) forbidden; use newtuple()"
-            assert typ != list, "space.wrap(list) forbidden; use newlist()"
-            assert typ != dict, "space.wrap(dict) forbidden; use newdict()"
-            assert typ != object, "degenerated space.wrap(object)"
-            if args_s[0].is_constant() and args_s[1].is_constant():
-                if typ in (str, bool, int, float):
-                    space = args_s[0].const
-                    x = args_s[1].const
-
-                    def fold():
-                        if typ is str and isidentifier(x):
-                            return space.new_interned_str(x)
-                        else:
-                            return space.wrap(x)
-                    builder = specialize.make_constgraphbuilder(2, 
factory=fold,
-                                                                
srcmodule='<ann_override.wrap>')
-                    return funcdesc.cachedgraph((typ, x), builder=builder)
-        if typ is str:
-            if args_s[1].can_be_None:
-                typ = (None, str)
-        return funcdesc.cachedgraph(typ)
-
     def consider_lookup(self, bookkeeper, attr):
         assert attr not in self.lookups
         from pypy.objspace.std import typeobject
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to