[pypy-svn] r17816 - pypy/dist/pypy/translator

arigo at codespeak.net arigo at codespeak.net
Sat Sep 24 12:44:06 CEST 2005


Author: arigo
Date: Sat Sep 24 12:44:02 2005
New Revision: 17816

Modified:
   pypy/dist/pypy/translator/annrpython.py
   pypy/dist/pypy/translator/transform.py
Log:
Who would have guessed that annotator.complete() would call
getreturnvar()  39'439'040 times?

Plus, let's use dict.fromkeys() more freely.


Modified: pypy/dist/pypy/translator/annrpython.py
==============================================================================
--- pypy/dist/pypy/translator/annrpython.py	(original)
+++ pypy/dist/pypy/translator/annrpython.py	Sat Sep 24 12:44:02 2005
@@ -193,7 +193,13 @@
                                  self.annotated.values().count(False))
         # make sure that the return variables of all graphs is annotated
         if self.translator is not None:
-            for graph in self.translator.flowgraphs.values():
+            if self.added_blocks is not None:
+                newgraphs = [self.translator.flowgraphs[self.annotated[block]]
+                             for block in self.added_blocks]
+                newgraphs = dict.fromkeys(newgraphs)
+            else:
+                newgraphs = self.translator.flowgraphs.itervalues() #all of them
+            for graph in newgraphs:
                 v = graph.getreturnvar()
                 if v not in self.bindings:
                     self.setbinding(v, annmodel.SomeImpossibleValue())

Modified: pypy/dist/pypy/translator/transform.py
==============================================================================
--- pypy/dist/pypy/translator/transform.py	(original)
+++ pypy/dist/pypy/translator/transform.py	Sat Sep 24 12:44:02 2005
@@ -17,13 +17,10 @@
 
 
 def checkgraphs(self, blocks):
-    seen = {}
-    for block in blocks:
-        fn = self.annotated[block]
-        graph = self.translator.flowgraphs[fn]
-        if graph not in seen:
-            checkgraph(graph)
-            seen[graph] = True
+    all_graphs = [self.translator.flowgraphs[fn]
+                  for fn in self.annotated.itervalues()]
+    for graph in dict.fromkeys(all_graphs):
+        checkgraph(graph)
 
 def fully_annotated_blocks(self):
     """Ignore blocked blocks."""



More information about the Pypy-commit mailing list