[pypy-svn] r7418 - pypy/trunk/src/goal
mgedmin at codespeak.net
mgedmin at codespeak.net
Fri Nov 19 11:39:48 CET 2004
Author: mgedmin
Date: Fri Nov 19 11:39:47 2004
New Revision: 7418
Modified:
pypy/trunk/src/goal/translate_pypy.py
Log:
List all functions that have SomeObject in their signature.
Modified: pypy/trunk/src/goal/translate_pypy.py
==============================================================================
--- pypy/trunk/src/goal/translate_pypy.py (original)
+++ pypy/trunk/src/goal/translate_pypy.py Fri Nov 19 11:39:47 2004
@@ -15,6 +15,7 @@
from pypy.translator.translator import Translator
from pypy.annotation import model as annmodel
from pypy.tool.cache import Cache
+from pypy.annotation.model import SomeObject
# XXX this tries to make compiling faster
from pypy.translator.tool import buildpyxmodule
@@ -41,6 +42,43 @@
a = t.annotate([])
a.simplify()
+ count_someobjects(a)
+
+def count_someobjects(annotator):
+ translator = annotator.translator
+
+ def is_someobject(var):
+ try:
+ return annotator.binding(var).__class__ == SomeObject
+ except KeyError:
+ return False
+
+ def short_binding(var):
+ binding = annotator.binding(var)
+ if binding.is_constant():
+ return 'const %s' % binding.__class__.__name__
+ else:
+ return binding.__class__.__name__
+
+ header = True
+ for func, graph in translator.flowgraphs.items():
+ unknown_input_args = len(filter(is_someobject, graph.getargs()))
+ unknown_return_value = is_someobject(graph.getreturnvar())
+ if unknown_input_args or unknown_return_value:
+ if header:
+ header = False
+ print "=" * 70
+ print "Functions that have SomeObject in their signature"
+ print "=" * 70
+ print ("%(name)s(%(args)s) -> %(result)s\n"
+ "%(filename)s:%(lineno)s\n"
+ % {'name': graph.name,
+ 'filename': func.func_globals.get('__name__', '?'),
+ 'lineno': func.func_code.co_firstlineno,
+ 'args': ', '.join(map(short_binding, graph.getargs())),
+ 'result': short_binding(graph.getreturnvar())})
+
+
if __name__ == '__main__':
options = {'-text': False,
More information about the Pypy-commit
mailing list