Author: Richard Plangger <r...@pasra.at> Branch: vecopt Changeset: r78682:d3b2ba395def Date: 2015-07-27 12:48 +0200 http://bitbucket.org/pypy/pypy/changeset/d3b2ba395def/
Log: using pygame viewer for the dependencies instead of writing it manually to the tmp folder (thx fijal for hint) diff --git a/rpython/conftest.py b/rpython/conftest.py --- a/rpython/conftest.py +++ b/rpython/conftest.py @@ -40,6 +40,9 @@ group.addoption('--viewloops', action="store_true", default=False, dest="viewloops", help="show only the compiled loops") + group.addoption('--viewdeps', action="store_true", + default=False, dest="viewdeps", + help="show the dependencies that have been constructed from a trace") def pytest_pycollect_makeitem(__multicall__,collector, name, obj): diff --git a/rpython/jit/metainterp/optimizeopt/test/test_dependency.py b/rpython/jit/metainterp/optimizeopt/test/test_dependency.py --- a/rpython/jit/metainterp/optimizeopt/test/test_dependency.py +++ b/rpython/jit/metainterp/optimizeopt/test/test_dependency.py @@ -7,6 +7,7 @@ from rpython.jit.metainterp.optimizeopt.dependency import (DependencyGraph, Dependency, IndexVar, MemoryRef) from rpython.jit.metainterp.resoperation import rop, ResOperation +from rpython.conftest import option class DependencyBaseTest(BaseTest): @@ -16,7 +17,7 @@ def build_dependency(self, ops): loop = self.parse_loop(ops) self.last_graph = DependencyGraph(loop) - self._write_dot_and_convert_to_svg(self.last_graph, self.test_name) + self.show_dot_graph(self.last_graph, self.test_name) for node in self.last_graph.nodes: assert node.independent(node) return self.last_graph @@ -45,7 +46,7 @@ node_b = graph.getnode(idx_b) dependency = node_a.getedge_to(node_b) if dependency is None and idx_b not in exceptions.setdefault(idx,[]): - self._write_dot_and_convert_to_svg(graph, 'except') + self.show_dot_graph(graph, self.test_name + '_except') assert dependency is not None, \ " it is expected that instruction at index" + \ " %s depends on instr on index %s but it does not.\n%s" \ @@ -92,13 +93,13 @@ b = self.last_graph.getnode(b) assert not a.independent(b), "{a} and {b} are independent!".format(a=a,b=b) - def _write_dot_and_convert_to_svg(self, graph, filename): - dot = graph.as_dot() - with open('/tmp/_'+filename+'.dot', 'w') as fd: - fd.write(dot) - with open('/tmp/'+filename+'.svg', 'w') as fd: - import subprocess - subprocess.Popen(['dot', '-Tsvg', '/tmp/_'+filename+'.dot'], stdout=fd).communicate() + def show_dot_graph(self, graph, name): + if option and option.viewdeps: + from rpython.translator.tool.graphpage import GraphPage + page = GraphPage() + page.source = graph.as_dot() + page.links = [] + page.display() def debug_print_operations(self, loop): print('--- loop instr numbered ---') diff --git a/rpython/jit/metainterp/optimizeopt/test/test_vectorize.py b/rpython/jit/metainterp/optimizeopt/test/test_vectorize.py --- a/rpython/jit/metainterp/optimizeopt/test/test_vectorize.py +++ b/rpython/jit/metainterp/optimizeopt/test/test_vectorize.py @@ -76,7 +76,7 @@ loop.operations.insert(idx+1, guard) opt.analyse_index_calculations() if opt.dependency_graph is not None: - self._write_dot_and_convert_to_svg(opt.dependency_graph, "ee" + self.test_name) + self.show_dot_graph(opt.dependency_graph, "early_exit_" + self.test_name) opt.schedule(False) opt.unroll_loop_iterations(loop, unroll_factor) opt.loop.operations = opt.get_newoperations() @@ -84,7 +84,7 @@ opt.clear_newoperations() opt.build_dependency_graph() self.last_graph = opt.dependency_graph - self._write_dot_and_convert_to_svg(self.last_graph, self.test_name) + self.show_dot_graph(self.last_graph, self.test_name) return opt def init_packset(self, loop, unroll_factor = -1): diff --git a/rpython/translator/tool/graphpage.py b/rpython/translator/tool/graphpage.py --- a/rpython/translator/tool/graphpage.py +++ b/rpython/translator/tool/graphpage.py @@ -12,7 +12,6 @@ class GraphPage(BaseGraphPage): save_tmp_file = str(udir.join('graph.dot')) - class VariableHistoryGraphPage(GraphPage): """ A GraphPage showing the history of variable bindings. """ _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit