[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