[pypy-svn] r12107 - in pypy/dist/pypy/translator: . tool

pedronis at codespeak.net pedronis at codespeak.net
Mon May 9 14:01:51 CEST 2005


Author: pedronis
Date: Mon May  9 14:01:51 2005
New Revision: 12107

Modified:
   pypy/dist/pypy/translator/geninterplevel.py
   pypy/dist/pypy/translator/simplify.py
   pypy/dist/pypy/translator/tool/tointerplevel.py
   pypy/dist/pypy/translator/translator.py
Log:
let pass around a list of wanted passes to simplify mechanism, so that geninterplevel can explicitly avoid 
transform_ovfcheck which makes little sense for it right now, the _ovf version of operations being not space ops. 

test_geninterp passes again



Modified: pypy/dist/pypy/translator/geninterplevel.py
==============================================================================
--- pypy/dist/pypy/translator/geninterplevel.py	(original)
+++ pypy/dist/pypy/translator/geninterplevel.py	Mon May  9 14:01:51 2005
@@ -39,6 +39,13 @@
 from pypy.translator.gensupp import ordered_blocks, UniqueList, builtin_base, \
      c_string, uniquemodulename, C_IDENTIFIER, NameManager
 
+
+# list of simplifcation passes needed by geninterp
+from pypy.translator.simplify import transform_ovfcheck, all_passes as needed_passes
+
+needed_passes.remove(transform_ovfcheck)
+
+
 import pypy # __path__
 import py.path
 
@@ -1433,7 +1440,7 @@
     # extract certain stuff like a general module maker
     # and put this into tools/compile_exceptions, maybe???
     dic, entrypoint = exceptions_helper()
-    t = Translator(None, verbose=False, simplifying=True,
+    t = Translator(None, verbose=False, simplifying=needed_passes,
                    builtins_can_raise_exceptions=True,
                    do_imports_immediately=False)
     gen = GenRpy(t, entrypoint)
@@ -1452,7 +1459,7 @@
     dic = None
     if entrypoint.__name__.endswith("_helper"):
         dic, entrypoint = entrypoint()
-    t = Translator(entrypoint, verbose=False, simplifying=True, builtins_can_raise_exceptions=True)
+    t = Translator(entrypoint, verbose=False, simplifying=needed_passes, builtins_can_raise_exceptions=True)
     gen = GenRpy(t)
     gen.use_fast_call = True
     if dic: gen.moddict = dic
@@ -1472,7 +1479,7 @@
     def test():
         entrypoint()
         
-    t = Translator(test, verbose=False, simplifying=True,
+    t = Translator(test, verbose=False, simplifying=needed_passes,
                    builtins_can_raise_exceptions=True,
                    do_imports_immediately=False)
     gen2 = GenRpy(t)
@@ -1526,7 +1533,7 @@
     exec code in dic
     #del dic['__builtins__']
     entrypoint = dic
-    t = Translator(None, verbose=False, simplifying=True,
+    t = Translator(None, verbose=False, simplifying=needed_passes,
                    builtins_can_raise_exceptions=True,
                    do_imports_immediately=do_imports)
     hold = sys.path

Modified: pypy/dist/pypy/translator/simplify.py
==============================================================================
--- pypy/dist/pypy/translator/simplify.py	(original)
+++ pypy/dist/pypy/translator/simplify.py	Mon May  9 14:01:51 2005
@@ -10,19 +10,6 @@
 from pypy.objspace.flow.model import last_exception
 from pypy.objspace.flow.model import checkgraph, traverse, mkentrymap
 
-def simplify_graph(graph):
-    """inplace-apply all the existing optimisations to the graph."""
-    checkgraph(graph)
-    eliminate_empty_blocks(graph)
-    remove_assertion_errors(graph)
-    join_blocks(graph)
-    transform_dead_op_vars(graph)
-    remove_identical_vars(graph)
-    transform_ovfcheck(graph)
-    simplify_exceptions(graph)
-    remove_dead_exceptions(graph)
-    checkgraph(graph)
-
 # ____________________________________________________________
 
 def eliminate_empty_blocks(graph):
@@ -479,3 +466,26 @@
                     for link in block.exits:
                         consider_blocks[link.target] = True
                     break
+
+# ____ all passes & simplify_graph
+
+all_passes = [
+    eliminate_empty_blocks,
+    remove_assertion_errors,
+    join_blocks,
+    transform_dead_op_vars,
+    remove_identical_vars,
+    transform_ovfcheck,
+    simplify_exceptions,
+    remove_dead_exceptions,
+    ]
+
+def simplify_graph(graph, passes=True): # can take a list of passes to apply, True meaning all
+    """inplace-apply all the existing optimisations to the graph."""
+    if passes is True:
+        passes = all_passes
+    checkgraph(graph)
+    for pass_ in passes:
+        pass_(graph)
+    checkgraph(graph)
+

Modified: pypy/dist/pypy/translator/tool/tointerplevel.py
==============================================================================
--- pypy/dist/pypy/translator/tool/tointerplevel.py	(original)
+++ pypy/dist/pypy/translator/tool/tointerplevel.py	Mon May  9 14:01:51 2005
@@ -6,7 +6,7 @@
 
 from pypy.objspace.flow.objspace import FlowObjSpace
 from pypy.translator.translator import Translator
-from pypy.translator.geninterplevel import GenRpy
+from pypy.translator.geninterplevel import GenRpy, needed_passes as genrpy_needed_passes
 
 # change default
 FlowObjSpace.builtins_can_raise_exceptions = True
@@ -54,7 +54,7 @@
     else:
         entrypoint = tuple(objs)
 
-    t = Translator(None, verbose=False, simplifying=True, builtins_can_raise_exceptions=True)
+    t = Translator(None, verbose=False, simplifying=genrpy_needed_passes, builtins_can_raise_exceptions=True)
     gen = GenRpy(t, entrypoint, modname, mod.__dict__)
 
     output = options.output or modname + "interp.py"

Modified: pypy/dist/pypy/translator/translator.py
==============================================================================
--- pypy/dist/pypy/translator/translator.py	(original)
+++ pypy/dist/pypy/translator/translator.py	Mon May  9 14:01:51 2005
@@ -86,7 +86,7 @@
             space.do_imports_immediately = self.do_imports_immediately
             graph = space.build_flow(func)
             if self.simplifying:
-                simplify_graph(graph)
+                simplify_graph(graph, self.simplifying)
             if self.verbose:
                 print
             self.flowgraphs[func] = graph
@@ -130,15 +130,15 @@
         from pypy.translator.tool.graphpage import TranslatorPage
         TranslatorPage(self).display()
 
-    def simplify(self, func=None):
+    def simplify(self, func=None, passes=True):
         """Simplifies the control flow graph (default: for all functions)."""
         if func is None:
             for func in self.flowgraphs.keys():
                 self.simplify(func)
         else:
             graph = self.getflowgraph(func)
-            simplify_graph(graph)
-
+            simplify_graph(graph, passes)
+            
     def annotate(self, input_args_types, func=None, overrides={}):
         """annotate(self, input_arg_types[, func]) -> Annotator
 



More information about the Pypy-commit mailing list