[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