[pypy-svn] r21163 - pypy/dist/pypy/translator/backendopt
cfbolz at codespeak.net
cfbolz at codespeak.net
Wed Dec 14 23:40:23 CET 2005
Author: cfbolz
Date: Wed Dec 14 23:40:21 2005
New Revision: 21163
Modified:
pypy/dist/pypy/translator/backendopt/inline.py
Log:
make functions that are called exactly once more likely to get inlined.
Modified: pypy/dist/pypy/translator/backendopt/inline.py
==============================================================================
--- pypy/dist/pypy/translator/backendopt/inline.py (original)
+++ pypy/dist/pypy/translator/backendopt/inline.py Wed Dec 14 23:40:21 2005
@@ -320,10 +320,14 @@
count += block_weight(block)
return count
-def inlining_heuristic(graph):
+def inlining_heuristic(graph, callers=None, callees=None):
# XXX ponderation factors?
+ factor = 1
+ if callers is not None:
+ if len(callers) == 1:
+ factor = 0.1
return (0.9999 * measure_median_execution_cost(graph) +
- static_instruction_count(graph))
+ static_instruction_count(graph)) * factor
def static_callers(translator, ignore_primitives=False):
@@ -361,7 +365,7 @@
while fiboheap:
weight, graph = fiboheap[0]
if not valid_weight.get(graph):
- weight = inlining_heuristic(graph)
+ weight = inlining_heuristic(graph, callers.get(graph), callees.get(graph))
#print ' + cost %7.2f %50s' % (weight, graph.name)
heapreplace(fiboheap, (weight, graph))
valid_weight[graph] = True
More information about the Pypy-commit
mailing list