Author: Ronan Lamy <[email protected]>
Branch: var-in-Some
Changeset: r73789:49ee4640237d
Date: 2014-10-05 17:21 +0100
http://bitbucket.org/pypy/pypy/changeset/49ee4640237d/

Log:    pass the annotator object down to the specialised operation
        analysers

diff --git a/rpython/annotator/binaryop.py b/rpython/annotator/binaryop.py
--- a/rpython/annotator/binaryop.py
+++ b/rpython/annotator/binaryop.py
@@ -24,7 +24,7 @@
 
 
 @op.is_.register(SomeObject, SomeObject)
-def is__default(obj1, obj2):
+def is__default(annotator, obj1, obj2):
     r = SomeBool()
     s_obj1 = obj1.ann
     s_obj2 = obj2.ann
@@ -59,7 +59,7 @@
 
 def _make_cmp_annotator_default(cmp_op):
     @cmp_op.register(SomeObject, SomeObject)
-    def default_annotate(obj1, obj2):
+    def default_annotate(annotator, obj1, obj2):
         s_1, s_2 = obj1.ann, obj2.ann
         if s_1.is_immutable_constant() and s_2.is_immutable_constant():
             return immutablevalue(cmp_op.pyfunc(s_1.const, s_2.const))
@@ -245,7 +245,7 @@
 
 def _make_cmp_annotator_int(cmp_op):
     @cmp_op.register(SomeInteger, SomeInteger)
-    def _compare_helper(int1, int2):
+    def _compare_helper(annotator, int1, int2):
         r = SomeBool()
         s_int1, s_int2 = int1.ann, int2.ann
         if s_int1.is_immutable_constant() and s_int2.is_immutable_constant():
@@ -715,8 +715,8 @@
                 methodname=bltn1.methodname)
 
 @op.is_.register(SomePBC, SomePBC)
-def is__PBC_PBC(pbc1, pbc2):
-    s = is__default(pbc1, pbc2)
+def is__PBC_PBC(annotator, pbc1, pbc2):
+    s = is__default(annotator, pbc1, pbc2)
     if not s.is_constant():
         if not pbc1.ann.can_be_None or not pbc2.ann.can_be_None:
             for desc in pbc1.ann.descriptions:
diff --git a/rpython/annotator/unaryop.py b/rpython/annotator/unaryop.py
--- a/rpython/annotator/unaryop.py
+++ b/rpython/annotator/unaryop.py
@@ -22,13 +22,13 @@
 UNARY_OPERATIONS.remove('contains')
 
 @op.type.register(SomeObject)
-def type_SomeObject(arg):
+def type_SomeObject(annotator, arg):
     r = SomeType()
     r.is_type_of = [arg.value]
     return r
 
 @op.bool.register(SomeObject)
-def bool_SomeObject(obj):
+def bool_SomeObject(annotator, obj):
     r = SomeBool()
     obj.ann.bool_behavior(r)
     s_nonnone_obj = obj.ann
@@ -40,16 +40,16 @@
     return r
 
 @op.contains.register(SomeObject)
-def contains_SomeObject(obj, element):
+def contains_SomeObject(annotator, obj, element):
     return s_Bool
 contains_SomeObject.can_only_throw = []
 
 @op.simple_call.register(SomeObject)
-def simple_call_SomeObject(func, *args):
+def simple_call_SomeObject(annotator, func, *args):
     return func.ann.call(simple_args([arg.ann for arg in args]))
 
 @op.call_args.register(SomeObject)
-def call_args(func, *args):
+def call_args(annotator, func, *args):
     return func.ann.call(complex_args([arg.ann for arg in args]))
 
 class __extend__(SomeObject):
@@ -247,7 +247,7 @@
         return SomeTuple(items)
 
 @op.contains.register(SomeList)
-def contains_SomeList(obj, element):
+def contains_SomeList(annotator, obj, element):
     obj.ann.listdef.generalize(element.ann)
     return s_Bool
 contains_SomeList.can_only_throw = []
@@ -344,7 +344,7 @@
     return []          # else: no possible exception
 
 @op.contains.register(SomeDict)
-def contains_SomeDict(dct, element):
+def contains_SomeDict(annotator, dct, element):
     dct.ann.dictdef.generalize_key(element.ann)
     if dct.ann._is_empty():
         s_bool = SomeBool()
@@ -436,7 +436,7 @@
 
 @op.contains.register(SomeString)
 @op.contains.register(SomeUnicodeString)
-def contains_String(string, char):
+def contains_String(annotator, string, char):
     if char.ann.is_constant() and char.ann.const == "\0":
         r = SomeBool()
         knowntypedata = {}
@@ -445,7 +445,7 @@
         r.set_knowntypedata(knowntypedata)
         return r
     else:
-        return contains_SomeObject(string, char)
+        return contains_SomeObject(annotator, string, char)
 contains_String.can_only_throw = []
 
 
diff --git a/rpython/flowspace/operation.py b/rpython/flowspace/operation.py
--- a/rpython/flowspace/operation.py
+++ b/rpython/flowspace/operation.py
@@ -99,7 +99,7 @@
     def consider(self, annotator, *args):
         args_s = [arg.ann for arg in args]
         spec = type(self).get_specialization(*args_s)
-        return spec(*args)
+        return spec(annotator, *args)
 
     def get_can_only_throw(self, annotator):
         return None
@@ -175,7 +175,7 @@
         try:
             impl = getattr(s_arg, cls.opname)
 
-            def specialized(arg, *other_args):
+            def specialized(annotator, arg, *other_args):
                 return impl(*[x.ann for x in other_args])
             try:
                 specialized.can_only_throw = impl.can_only_throw
@@ -201,7 +201,7 @@
         try:
             impl = getattr(pair(s_arg1, s_arg2), cls.opname)
 
-            def specialized(arg1, arg2, *other_args):
+            def specialized(annotator, arg1, arg2, *other_args):
                 return impl(*[x.ann for x in other_args])
             try:
                 specialized.can_only_throw = impl.can_only_throw
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to