[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