annotate Python/makeopcodetargets.py @ 64085:4df0d2a13aa1 3.1

Merged revisions 81214,82302,82465,83090-83091,84097,84099 via svnmerge from svn+ssh://pythondev@svn.python.org/python/branches/py3k ................ r81214 | brett.cannon | 2010-05-16 00:20:16 +0200 (dim., 16 mai 2010) | 2 lines A test was not guaranteeing cleanup in the face of an exception. ................ r82302 | benjamin.peterson | 2010-06-28 00:37:28 +0200 (lun., 28 juin 2010) | 15 lines Merged revisions 81380 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r81380 | brett.cannon | 2010-05-20 13:37:55 -0500 (Thu, 20 May 2010) | 8 lines Turned out that if you used explicit relative import syntax (e.g. from .os import sep) and it failed, import would still try the implicit relative import semantics of an absolute import (from os import sep). That's not right, so when level is negative, only do explicit relative import semantics. Fixes issue #7902. Thanks to Meador Inge for the patch. ........ ................ r82465 | brett.cannon | 2010-07-03 03:32:48 +0200 (sam., 03 juil. 2010) | 3 lines Make test_import a little bit more robust for cleaning up after itself in the face of a failure. ................ r83090 | brett.cannon | 2010-07-23 16:03:16 +0200 (ven., 23 juil. 2010) | 4 lines Explicitly test relative imports by reusing importlib tests. Closes issue 8392. Thanks Virgil Dupras for the initial patch. ................ r83091 | brett.cannon | 2010-07-23 16:45:19 +0200 (ven., 23 juil. 2010) | 1 line Stop shadowing a test class. ................ r84097 | florent.xicluna | 2010-08-16 20:41:19 +0200 (lun., 16 août 2010) | 1 line Use test.support and unittest features. Fix duplicated test (bad merge in r79033). Fix comment for issue #7902. ................ r84099 | florent.xicluna | 2010-08-16 21:03:05 +0200 (lun., 16 août 2010) | 1 line I get it wrong in r84097: s/relative/absolute/ ................
author Florent Xicluna <florent.xicluna@gmail.com>
date Mon, 16 Aug 2010 22:40:45 +0000
parents f197407bdba2
children 3c9232a684ae
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
51031
d86e23318b41 Issue #4753: By enabling a configure option named '--with-computed-gotos'
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff changeset
1 #! /usr/bin/env python
d86e23318b41 Issue #4753: By enabling a configure option named '--with-computed-gotos'
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff changeset
2 """Generate C code for the jump table of the threaded code interpreter
d86e23318b41 Issue #4753: By enabling a configure option named '--with-computed-gotos'
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff changeset
3 (for compilers supporting computed gotos or "labels-as-values", such as gcc).
d86e23318b41 Issue #4753: By enabling a configure option named '--with-computed-gotos'
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff changeset
4 """
d86e23318b41 Issue #4753: By enabling a configure option named '--with-computed-gotos'
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff changeset
5
51202
df090597afaa Make Python/makeopcodetargets runnable with Python 2.3. With any luck, this
Mark Dickinson <dickinsm@gmail.com>
parents: 51031
diff changeset
6 # This code should stay compatible with Python 2.3, at least while
df090597afaa Make Python/makeopcodetargets runnable with Python 2.3. With any luck, this
Mark Dickinson <dickinsm@gmail.com>
parents: 51031
diff changeset
7 # some of the buildbots have Python 2.3 as their system Python.
df090597afaa Make Python/makeopcodetargets runnable with Python 2.3. With any luck, this
Mark Dickinson <dickinsm@gmail.com>
parents: 51031
diff changeset
8
51031
d86e23318b41 Issue #4753: By enabling a configure option named '--with-computed-gotos'
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff changeset
9 import imp
d86e23318b41 Issue #4753: By enabling a configure option named '--with-computed-gotos'
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff changeset
10 import os
d86e23318b41 Issue #4753: By enabling a configure option named '--with-computed-gotos'
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff changeset
11
d86e23318b41 Issue #4753: By enabling a configure option named '--with-computed-gotos'
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff changeset
12
d86e23318b41 Issue #4753: By enabling a configure option named '--with-computed-gotos'
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff changeset
13 def find_module(modname):
d86e23318b41 Issue #4753: By enabling a configure option named '--with-computed-gotos'
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff changeset
14 """Finds and returns a module in the local dist/checkout.
d86e23318b41 Issue #4753: By enabling a configure option named '--with-computed-gotos'
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff changeset
15 """
d86e23318b41 Issue #4753: By enabling a configure option named '--with-computed-gotos'
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff changeset
16 modpath = os.path.join(
d86e23318b41 Issue #4753: By enabling a configure option named '--with-computed-gotos'
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff changeset
17 os.path.dirname(os.path.dirname(__file__)), "Lib")
d86e23318b41 Issue #4753: By enabling a configure option named '--with-computed-gotos'
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff changeset
18 return imp.load_module(modname, *imp.find_module(modname, [modpath]))
d86e23318b41 Issue #4753: By enabling a configure option named '--with-computed-gotos'
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff changeset
19
d86e23318b41 Issue #4753: By enabling a configure option named '--with-computed-gotos'
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff changeset
20 def write_contents(f):
d86e23318b41 Issue #4753: By enabling a configure option named '--with-computed-gotos'
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff changeset
21 """Write C code contents to the target file object.
d86e23318b41 Issue #4753: By enabling a configure option named '--with-computed-gotos'
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff changeset
22 """
d86e23318b41 Issue #4753: By enabling a configure option named '--with-computed-gotos'
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff changeset
23 opcode = find_module("opcode")
d86e23318b41 Issue #4753: By enabling a configure option named '--with-computed-gotos'
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff changeset
24 targets = ['_unknown_opcode'] * 256
d86e23318b41 Issue #4753: By enabling a configure option named '--with-computed-gotos'
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff changeset
25 for opname, op in opcode.opmap.items():
d86e23318b41 Issue #4753: By enabling a configure option named '--with-computed-gotos'
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff changeset
26 if opname == "STOP_CODE":
d86e23318b41 Issue #4753: By enabling a configure option named '--with-computed-gotos'
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff changeset
27 # XXX opcode not implemented
d86e23318b41 Issue #4753: By enabling a configure option named '--with-computed-gotos'
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff changeset
28 continue
d86e23318b41 Issue #4753: By enabling a configure option named '--with-computed-gotos'
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff changeset
29 targets[op] = "TARGET_%s" % opname
d86e23318b41 Issue #4753: By enabling a configure option named '--with-computed-gotos'
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff changeset
30 f.write("static void *opcode_targets[256] = {\n")
61467
f197407bdba2 Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 51202
diff changeset
31 f.write(",\n".join([" &&%s" % s for s in targets]))
51031
d86e23318b41 Issue #4753: By enabling a configure option named '--with-computed-gotos'
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff changeset
32 f.write("\n};\n")
d86e23318b41 Issue #4753: By enabling a configure option named '--with-computed-gotos'
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff changeset
33
d86e23318b41 Issue #4753: By enabling a configure option named '--with-computed-gotos'
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff changeset
34
d86e23318b41 Issue #4753: By enabling a configure option named '--with-computed-gotos'
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff changeset
35 if __name__ == "__main__":
d86e23318b41 Issue #4753: By enabling a configure option named '--with-computed-gotos'
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff changeset
36 import sys
d86e23318b41 Issue #4753: By enabling a configure option named '--with-computed-gotos'
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff changeset
37 assert len(sys.argv) < 3, "Too many arguments"
d86e23318b41 Issue #4753: By enabling a configure option named '--with-computed-gotos'
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff changeset
38 if len(sys.argv) == 2:
d86e23318b41 Issue #4753: By enabling a configure option named '--with-computed-gotos'
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff changeset
39 target = sys.argv[1]
d86e23318b41 Issue #4753: By enabling a configure option named '--with-computed-gotos'
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff changeset
40 else:
d86e23318b41 Issue #4753: By enabling a configure option named '--with-computed-gotos'
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff changeset
41 target = "Python/opcode_targets.h"
d86e23318b41 Issue #4753: By enabling a configure option named '--with-computed-gotos'
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff changeset
42 f = open(target, "w")
d86e23318b41 Issue #4753: By enabling a configure option named '--with-computed-gotos'
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff changeset
43 try:
d86e23318b41 Issue #4753: By enabling a configure option named '--with-computed-gotos'
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff changeset
44 write_contents(f)
d86e23318b41 Issue #4753: By enabling a configure option named '--with-computed-gotos'
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff changeset
45 finally:
d86e23318b41 Issue #4753: By enabling a configure option named '--with-computed-gotos'
Antoine Pitrou <solipsis@pitrou.net>
parents:
diff changeset
46 f.close()