[pypy-commit] pypy default: Change GraphAnalyzer to use a more precise way to recognize external functions.
mjacob
pypy.commits at gmail.com
Mon Jan 11 01:12:01 EST 2016
Author: Manuel Jacob <me at manueljacob.de>
Branch:
Changeset: r81660:6c748497435c
Date: 2016-01-11 01:50 +0100
http://bitbucket.org/pypy/pypy/changeset/6c748497435c/
Log: Change GraphAnalyzer to use a more precise way to recognize external
functions.
diff --git a/rpython/translator/backendopt/graphanalyze.py b/rpython/translator/backendopt/graphanalyze.py
--- a/rpython/translator/backendopt/graphanalyze.py
+++ b/rpython/translator/backendopt/graphanalyze.py
@@ -77,12 +77,14 @@
def analyze(self, op, seen=None, graphinfo=None):
if op.opname == "direct_call":
- graph = get_graph(op.args[0], self.translator)
- if graph is None:
+ funcobj = op.args[0].value._obj
+ if getattr(funcobj, 'external', None) is not None:
x = self.analyze_external_call(op, seen)
if self.verbose and x:
self.dump_info('analyze_external_call %s: %r' % (op, x))
return x
+ graph = get_graph(op.args[0], self.translator)
+ assert graph is not None
x = self.analyze_direct_call(graph, seen)
if self.verbose and x:
self.dump_info('analyze_direct_call(%s): %r' % (graph, x))
More information about the pypy-commit
mailing list