Mercurial > cpython-lru_cache-weakref
view Tools/compiler/stacktest.py @ 58765:2ba7677bfa95 legacy-trunk
testCopysign was defined twice in test_math; combine the definitions
| author | Mark Dickinson <dickinsm@gmail.com> |
|---|---|
| date | Sat, 06 Feb 2010 23:11:25 +0000 |
| parents | 7cbd2887f60f |
| children |
line wrap: on
line source
import compiler import dis import types def extract_code_objects(co): l = [co] for const in co.co_consts: if type(const) == types.CodeType: l.append(const) return l def compare(a, b): if not (a.co_name == "?" or a.co_name.startswith('<lambda')): assert a.co_name == b.co_name, (a, b) if a.co_stacksize != b.co_stacksize: print "stack mismatch %s: %d vs. %d" % (a.co_name, a.co_stacksize, b.co_stacksize) if a.co_stacksize > b.co_stacksize: print "good code" dis.dis(a) print "bad code" dis.dis(b) assert 0 def main(files): for file in files: print file buf = open(file).read() try: co1 = compile(buf, file, "exec") except SyntaxError: print "skipped" continue co2 = compiler.compile(buf, file, "exec") co1l = extract_code_objects(co1) co2l = extract_code_objects(co2) for a, b in zip(co1l, co2l): compare(a, b) if __name__ == "__main__": import sys main(sys.argv[1:])
