[pypy-commit] pypy var-in-Some: register annotator for op.bool; kill another use of the _find_current_op() hack

rlamy noreply at buildbot.pypy.org
Sat May 17 16:04:07 CEST 2014


Author: Ronan Lamy <ronan.lamy at gmail.com>
Branch: var-in-Some
Changeset: r71558:f0b04e182370
Date: 2014-05-17 05:57 +0100
http://bitbucket.org/pypy/pypy/changeset/f0b04e182370/

Log:	register annotator for op.bool; kill another use of the
	_find_current_op() hack

diff --git a/rpython/annotator/unaryop.py b/rpython/annotator/unaryop.py
--- a/rpython/annotator/unaryop.py
+++ b/rpython/annotator/unaryop.py
@@ -20,11 +20,23 @@
                         if oper.dispatch == 1])
 
 @op.type.register(SomeObject)
-def type(arg):
+def type_SomeObject(arg):
     r = SomeType()
     r.is_type_of = [arg.value]
     return r
 
+ at op.bool.register(SomeObject)
+def bool_SomeObject(obj):
+    r = SomeBool()
+    obj.ann.bool_behavior(r)
+    s_nonnone_obj = obj.ann
+    if s_nonnone_obj.can_be_none():
+        s_nonnone_obj = s_nonnone_obj.nonnoneify()
+    knowntypedata = {}
+    add_knowntypedata(knowntypedata, True, [obj.value], s_nonnone_obj)
+    r.set_knowntypedata(knowntypedata)
+    return r
+
 class __extend__(SomeObject):
 
     def issubtype(self, s_cls):
@@ -48,21 +60,6 @@
             if s_len.is_immutable_constant():
                 s.const = s_len.const > 0
 
-    def bool(s_obj):
-        r = SomeBool()
-        s_obj.bool_behavior(r)
-
-        bk = getbookkeeper()
-        knowntypedata = {}
-        op = bk._find_current_op(opname="bool", arity=1)
-        arg = op.args[0]
-        s_nonnone_obj = s_obj
-        if s_obj.can_be_none():
-            s_nonnone_obj = s_obj.nonnoneify()
-        add_knowntypedata(knowntypedata, True, [arg], s_nonnone_obj)
-        r.set_knowntypedata(knowntypedata)
-        return r
-
     def hash(self):
         raise AnnotatorError("cannot use hash() in RPython")
 


More information about the pypy-commit mailing list