Author: Ronan Lamy <[email protected]>
Branch:
Changeset: r93050:203414415a39
Date: 2016-11-20 17:24 +0000
http://bitbucket.org/pypy/pypy/changeset/203414415a39/
Log: Kill confusing function callback case in emulate_pbc_call()
diff --git a/rpython/annotator/annrpython.py b/rpython/annotator/annrpython.py
--- a/rpython/annotator/annrpython.py
+++ b/rpython/annotator/annrpython.py
@@ -313,17 +313,12 @@
parent_graph, parent_block, parent_index = whence
tag = parent_block, parent_index
self.translator.update_call_graph(parent_graph, graph, tag)
- # self.notify[graph.returnblock] is a dictionary of call
+ # self.notify[graph.returnblock] is a set of call
# points to this func which triggers a reflow whenever the
# return block of this graph has been analysed.
- callpositions = self.notify.setdefault(graph.returnblock, {})
+ returnpositions = self.notify.setdefault(graph.returnblock, set())
if whence is not None:
- if callable(whence):
- def callback():
- whence(self, graph)
- else:
- callback = whence
- callpositions[callback] = True
+ returnpositions.add(whence)
# generalize the function's input arguments
self.addpendingblock(graph, graph.startblock, inputcells)
@@ -574,12 +569,8 @@
self.follow_link(graph, link, constraints)
if block in self.notify:
- # reflow from certain positions when this block is done
- for callback in self.notify[block]:
- if isinstance(callback, tuple):
- self.reflowfromposition(callback) # callback is a position
- else:
- callback()
+ for position in self.notify[block]:
+ self.reflowfromposition(position)
def follow_link(self, graph, link, constraints):
diff --git a/rpython/annotator/bookkeeper.py b/rpython/annotator/bookkeeper.py
--- a/rpython/annotator/bookkeeper.py
+++ b/rpython/annotator/bookkeeper.py
@@ -547,10 +547,8 @@
(position_key, "first") and (position_key, "second").
In general, "unique_key" should somehow uniquely identify where
- the call is in the source code, and "callback" can be either a
- position_key to reflow from when we see more general results,
- or a real callback function that will be called with arguments
- # "(annotator, called_graph)" whenever the result is generalized.
+ the call is in the source code, and "callback" is a
+ position_key to reflow from when we see more general results.
"replace" can be set to a list of old unique_key values to
forget now, because the given "unique_key" replaces them.
diff --git a/rpython/annotator/test/test_annrpython.py
b/rpython/annotator/test/test_annrpython.py
--- a/rpython/annotator/test/test_annrpython.py
+++ b/rpython/annotator/test/test_annrpython.py
@@ -2141,28 +2141,6 @@
assert (fdesc.get_s_signatures((2, (), False))
== [([someint,someint],someint)])
- def test_emulated_pbc_call_callback(self):
- def f(a,b):
- return a + b
- from rpython.annotator import annrpython
- a = annrpython.RPythonAnnotator()
- from rpython.annotator import model as annmodel
-
- memo = []
- def callb(ann, graph):
- memo.append(annmodel.SomeInteger() ==
ann.binding(graph.getreturnvar()))
-
- s_f = a.bookkeeper.immutablevalue(f)
- s = a.bookkeeper.emulate_pbc_call('f', s_f, [annmodel.SomeInteger(),
annmodel.SomeInteger()],
- callback=callb)
- assert s == annmodel.SomeImpossibleValue()
- a.complete()
-
- assert a.binding(graphof(a, f).getreturnvar()).knowntype == int
- assert len(memo) >= 1
- for t in memo:
- assert t
-
def test_iterator_union(self):
def it(d):
return d.iteritems()
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit