[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