[pypy-svn] r32757 - in pypy/branch/even-more-config/pypy: config translator translator/backendopt

cfbolz at codespeak.net cfbolz at codespeak.net
Sat Sep 30 01:24:28 CEST 2006


Author: cfbolz
Date: Sat Sep 30 01:24:25 2006
New Revision: 32757

Modified:
   pypy/branch/even-more-config/pypy/config/pypyoption.py
   pypy/branch/even-more-config/pypy/translator/backendopt/all.py
   pypy/branch/even-more-config/pypy/translator/driver.py
Log:
make it possible to use options to change the backend optimizations


Modified: pypy/branch/even-more-config/pypy/config/pypyoption.py
==============================================================================
--- pypy/branch/even-more-config/pypy/config/pypyoption.py	(original)
+++ pypy/branch/even-more-config/pypy/config/pypyoption.py	Sat Sep 30 01:24:25 2006
@@ -136,6 +136,27 @@
         BoolOption("list_comprehension_operations", "XXX", default=False,
                    cmdline=None),
 
+        OptionDescription("backendopt", "Backend Optimization Options", [
+            BoolOption("print_statistics", "Print statistics while optimizing",
+                       default=False),
+            BoolOption("merge_if_blocks", "Remove mallocs", default=True),
+            BoolOption("raisingop2direct_call",
+                       "Transform exception raising operations",
+                       default=False, cmdline="--raisingop2direct_call"),
+            BoolOption("mallocs", "Remove mallocs", default=True),
+            BoolOption("merge_if_blocks", "Remove mallocs", default=True),
+            BoolOption("propagate", "Constant propagation, deprecated",
+                       default=False),
+            BoolOption("constfold", "Constant propagation",
+                       default=True),
+            BoolOption("heap2stack", "Escape analysis and stack allocation",
+                       default=False,
+                       requires=[("translation.stackless", False)]),
+            BoolOption("clever_malloc_removal",
+                       "Remove mallocs in a clever way", default=False),
+            IntOption("inline_threshold", "Threshold when to inline functions",
+                      default=1, cmdline=None),
+            ]),
     ])
 ])
 

Modified: pypy/branch/even-more-config/pypy/translator/backendopt/all.py
==============================================================================
--- pypy/branch/even-more-config/pypy/translator/backendopt/all.py	(original)
+++ pypy/branch/even-more-config/pypy/translator/backendopt/all.py	Sat Sep 30 01:24:25 2006
@@ -12,8 +12,6 @@
 from pypy.translator.backendopt.support import log
 from pypy.objspace.flow.model import checkgraph
 
-PRINT_STATISTICS = False
-
 def backend_optimizations(translator, graphs=None,
                                       raisingop2direct_call_all=False,
                                       inline_threshold=1,
@@ -24,10 +22,22 @@
                                       heap2stack=False,
                                       clever_malloc_removal=False):
 
+    config = translator.config.translation.backendopt
+    # ZZZ the arguments here should disappear
+    raisingop2direct_call_all = (config.raisingop2direct_call or
+        raisingop2direct_call_all)
+    mallocs = config.mallocs or mallocs
+    merge_if_blocks_to_switch = (config.merge_if_blocks or
+        merge_if_blocks_to_switch)
+    propagate = config.propagate or propagate
+    constfold = config.propagate or propagate
+    heap2stack = config.heap2stack or heap2stack
+    clever_malloc_removal = config.clever_malloc_removal or clever_malloc_removal
+
     if graphs is None:
         graphs = translator.graphs
 
-    if PRINT_STATISTICS:
+    if config.print_statistics:
         print "before optimizations:"
         print_statistics(translator.graphs[0], translator, "per-graph.txt")
 
@@ -41,7 +51,7 @@
         simplify.transform_dead_op_vars(graph, translator)
         removenoops.remove_duplicate_casts(graph, translator)
 
-    if PRINT_STATISTICS:
+    if config.print_statistics:
         print "after no-op removal:"
         print_statistics(translator.graphs[0], translator)
 
@@ -60,7 +70,7 @@
                 removenoops.remove_superfluous_keep_alive(graph)
                 removenoops.remove_duplicate_casts(graph, translator)
 
-        if PRINT_STATISTICS:
+        if config.print_statistics:
             print "after inlining:"
             print_statistics(translator.graphs[0], translator)
 
@@ -77,14 +87,14 @@
                     tot += count
             log.malloc("removed %d simple mallocs in total" % tot)
 
-        if PRINT_STATISTICS:
+        if config.print_statistics:
             print "after malloc removal:"
             print_statistics(translator.graphs[0], translator)
     else:
         assert graphs is translator.graphs  # XXX for now
         clever_inlining_and_malloc_removal(translator)
 
-        if PRINT_STATISTICS:
+        if config.print_statistics:
             print "after clever inlining and malloc removal"
             print_statistics(translator.graphs[0], translator)
 
@@ -104,7 +114,7 @@
         for graph in graphs:
             merge_if_blocks(graph)
 
-    if PRINT_STATISTICS:
+    if config.print_statistics:
         print "after if-to-switch:"
         print_statistics(translator.graphs[0], translator)
 

Modified: pypy/branch/even-more-config/pypy/translator/driver.py
==============================================================================
--- pypy/branch/even-more-config/pypy/translator/driver.py	(original)
+++ pypy/branch/even-more-config/pypy/translator/driver.py	Sat Sep 30 01:24:25 2006
@@ -274,7 +274,7 @@
                               raisingop2direct_call_all=opt.raisingop2direct_call,
                               merge_if_blocks_to_switch=opt.merge_if_blocks)
     #
-    task_backendopt_lltype = taskdef(task_backendopt_lltype, 
+    task_backendopt_lltype = taskdef(task_backendopt_lltype,
                                         [RTYPE], "Back-end optimisations")
     BACKENDOPT = 'backendopt_lltype'
 



More information about the Pypy-commit mailing list