Author: Armin Rigo <ar...@tunes.org> Branch: Changeset: r47286:1ffcf2cd905f Date: 2011-09-16 12:43 +0200 http://bitbucket.org/pypy/pypy/changeset/1ffcf2cd905f/
Log: Translation fix diff --git a/pypy/rpython/memory/gctransform/asmgcroot.py b/pypy/rpython/memory/gctransform/asmgcroot.py --- a/pypy/rpython/memory/gctransform/asmgcroot.py +++ b/pypy/rpython/memory/gctransform/asmgcroot.py @@ -663,4 +663,5 @@ QSORT_CALLBACK_PTR], lltype.Void, sandboxsafe=True, + random_effects_on_gcobjs=False, # but has a callback _nowrapper=True) diff --git a/pypy/translator/backendopt/graphanalyze.py b/pypy/translator/backendopt/graphanalyze.py --- a/pypy/translator/backendopt/graphanalyze.py +++ b/pypy/translator/backendopt/graphanalyze.py @@ -3,6 +3,8 @@ from pypy.rpython.lltypesystem import lltype class GraphAnalyzer(object): + verbose = False + def __init__(self, translator): self.translator = translator self.analyzed_calls = {} @@ -71,12 +73,24 @@ if op.opname == "direct_call": graph = get_graph(op.args[0], self.translator) if graph is None: - return self.analyze_external_call(op, seen) - return self.analyze_direct_call(graph, seen) + x = self.analyze_external_call(op, seen) + if self.verbose and x: + print '\tanalyze_external_call %s: %r' % (op, x) + return x + x = self.analyze_direct_call(graph, seen) + if self.verbose and x: + print '\tanalyze_direct_call(%s): %r' % (graph, x) + return x elif op.opname == "indirect_call": - if op.args[-1].value is None: + graphs = op.args[-1].value + if graphs is None: + if self.verbose: + print '\t%s to unknown' % (op,) return self.top_result() - return self.analyze_indirect_call(op.args[-1].value, seen) + x = self.analyze_indirect_call(graphs, seen) + if self.verbose and x: + print '\tanalyze_indirect_call(%s): %r' % (graphs, x) + return x elif op.opname == "oosend": name = op.args[0].value TYPE = op.args[1].concretetype @@ -85,7 +99,10 @@ if graph is None: return self.analyze_external_method(op, TYPE, meth) return self.analyze_oosend(TYPE, name, seen) - return self.analyze_simple_operation(op, graphinfo) + x = self.analyze_simple_operation(op, graphinfo) + if self.verbose and x: + print '\t%s: %r' % (op, x) + return x def analyze_direct_call(self, graph, seen=None): if graph in self.analyzed_calls: _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit