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