1993-07-28 06:05:47 -03:00
|
|
|
#ifndef Py_OPCODE_H
|
|
|
|
#define Py_OPCODE_H
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
1991-02-19 08:39:46 -04:00
|
|
|
|
1990-11-18 13:27:39 -04:00
|
|
|
/* Instruction opcodes for compiled code */
|
|
|
|
|
1990-12-20 11:06:42 -04:00
|
|
|
#define STOP_CODE 0
|
1990-11-18 13:27:39 -04:00
|
|
|
#define POP_TOP 1
|
|
|
|
#define ROT_TWO 2
|
|
|
|
#define ROT_THREE 3
|
1990-12-20 11:06:42 -04:00
|
|
|
#define DUP_TOP 4
|
2000-08-24 17:09:45 -03:00
|
|
|
#define ROT_FOUR 5
|
2004-06-21 13:31:15 -03:00
|
|
|
#define NOP 9
|
1990-11-18 13:27:39 -04:00
|
|
|
|
|
|
|
#define UNARY_POSITIVE 10
|
|
|
|
#define UNARY_NEGATIVE 11
|
|
|
|
#define UNARY_NOT 12
|
1995-07-18 11:21:06 -03:00
|
|
|
|
1991-10-24 11:59:31 -03:00
|
|
|
#define UNARY_INVERT 15
|
1990-11-18 13:27:39 -04:00
|
|
|
|
1996-01-11 20:51:44 -04:00
|
|
|
#define BINARY_POWER 19
|
|
|
|
|
1990-11-18 13:27:39 -04:00
|
|
|
#define BINARY_MULTIPLY 20
|
2006-03-16 02:02:10 -04:00
|
|
|
|
1990-11-18 13:27:39 -04:00
|
|
|
#define BINARY_MODULO 22
|
|
|
|
#define BINARY_ADD 23
|
|
|
|
#define BINARY_SUBTRACT 24
|
|
|
|
#define BINARY_SUBSCR 25
|
2001-08-08 02:00:18 -03:00
|
|
|
#define BINARY_FLOOR_DIVIDE 26
|
|
|
|
#define BINARY_TRUE_DIVIDE 27
|
|
|
|
#define INPLACE_FLOOR_DIVIDE 28
|
|
|
|
#define INPLACE_TRUE_DIVIDE 29
|
1990-11-18 13:27:39 -04:00
|
|
|
|
Merged revisions 59541-59561 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r59544 | raymond.hettinger | 2007-12-18 01:13:45 +0100 (Tue, 18 Dec 2007) | 1 line
Add more namedtuple() test cases. Neaten the code and comments.
........
r59545 | christian.heimes | 2007-12-18 04:38:03 +0100 (Tue, 18 Dec 2007) | 3 lines
Fixed for #1601: IDLE not working correctly on Windows (Py30a2/IDLE30a1)
Amaury's ideas works great. Should we build the Python core with WINVER=0x0500 and _WIN32_WINNT=0x0500, too?
........
r59546 | christian.heimes | 2007-12-18 10:00:13 +0100 (Tue, 18 Dec 2007) | 1 line
Make it a bit easier to test Tcl/Tk and idle from a build dir.
........
r59547 | christian.heimes | 2007-12-18 10:12:10 +0100 (Tue, 18 Dec 2007) | 1 line
Removed several unused files from the PCbuild9 directory. They are relics from the past.
........
r59548 | raymond.hettinger | 2007-12-18 19:26:18 +0100 (Tue, 18 Dec 2007) | 29 lines
Speed-up dictionary constructor by about 10%.
New opcode, STORE_MAP saves the compiler from awkward stack manipulations
and specializes for dicts using PyDict_SetItem instead of PyObject_SetItem.
Old disassembly:
0 BUILD_MAP 0
3 DUP_TOP
4 LOAD_CONST 1 (1)
7 ROT_TWO
8 LOAD_CONST 2 ('x')
11 STORE_SUBSCR
12 DUP_TOP
13 LOAD_CONST 3 (2)
16 ROT_TWO
17 LOAD_CONST 4 ('y')
20 STORE_SUBSCR
New disassembly:
0 BUILD_MAP 0
3 LOAD_CONST 1 (1)
6 LOAD_CONST 2 ('x')
9 STORE_MAP
10 LOAD_CONST 3 (2)
13 LOAD_CONST 4 ('y')
16 STORE_MAP
........
r59549 | thomas.heller | 2007-12-18 20:00:34 +0100 (Tue, 18 Dec 2007) | 2 lines
Issue #1642: Fix segfault in ctypes when trying to delete attributes.
........
r59551 | guido.van.rossum | 2007-12-18 21:10:42 +0100 (Tue, 18 Dec 2007) | 2 lines
Issue #1645 by Alberto Bertogli. Fix a comment.
........
r59553 | raymond.hettinger | 2007-12-18 22:24:09 +0100 (Tue, 18 Dec 2007) | 12 lines
Give meaning to the oparg for BUILD_MAP: estimated size of the dictionary.
Allows dictionaries to be pre-sized (upto 255 elements) saving time lost
to re-sizes with their attendant mallocs and re-insertions.
Has zero effect on small dictionaries (5 elements or fewer), a slight
benefit for dicts upto 22 elements (because they had to resize once
anyway), and more benefit for dicts upto 255 elements (saving multiple
resizes during the build-up and reducing the number of collisions on
the first insertions). Beyond 255 elements, there is no addional benefit.
........
r59554 | christian.heimes | 2007-12-18 22:56:09 +0100 (Tue, 18 Dec 2007) | 1 line
Fixed #1649: IDLE error: dictionary changed size during iteration
........
r59557 | raymond.hettinger | 2007-12-18 23:21:27 +0100 (Tue, 18 Dec 2007) | 1 line
Simplify and speedup _asdict() for named tuples.
........
r59558 | christian.heimes | 2007-12-19 00:22:54 +0100 (Wed, 19 Dec 2007) | 3 lines
Applied patch #1635: Float patch for inf and nan on Windows (and other platforms).
The patch unifies float("inf") and repr(float("inf")) on all platforms.
........
r59559 | raymond.hettinger | 2007-12-19 00:51:15 +0100 (Wed, 19 Dec 2007) | 1 line
Users demand iterable input for named tuples. The author capitulates.
........
r59560 | raymond.hettinger | 2007-12-19 01:21:06 +0100 (Wed, 19 Dec 2007) | 1 line
Beef-up tests for dict literals
........
r59561 | raymond.hettinger | 2007-12-19 01:27:21 +0100 (Wed, 19 Dec 2007) | 1 line
Zap a duplicate line
........
2007-12-18 22:07:34 -04:00
|
|
|
#define STORE_MAP 54
|
2000-08-24 17:09:45 -03:00
|
|
|
#define INPLACE_ADD 55
|
|
|
|
#define INPLACE_SUBTRACT 56
|
|
|
|
#define INPLACE_MULTIPLY 57
|
2006-03-17 04:59:09 -04:00
|
|
|
|
2000-08-24 17:09:45 -03:00
|
|
|
#define INPLACE_MODULO 59
|
1990-11-18 13:27:39 -04:00
|
|
|
#define STORE_SUBSCR 60
|
|
|
|
#define DELETE_SUBSCR 61
|
|
|
|
|
1991-10-24 11:59:31 -03:00
|
|
|
#define BINARY_LSHIFT 62
|
|
|
|
#define BINARY_RSHIFT 63
|
|
|
|
#define BINARY_AND 64
|
|
|
|
#define BINARY_XOR 65
|
|
|
|
#define BINARY_OR 66
|
2000-08-24 17:09:45 -03:00
|
|
|
#define INPLACE_POWER 67
|
2001-04-20 16:13:02 -03:00
|
|
|
#define GET_ITER 68
|
2007-03-18 12:41:51 -03:00
|
|
|
#define STORE_LOCALS 69
|
1990-11-18 13:27:39 -04:00
|
|
|
#define PRINT_EXPR 70
|
2007-03-18 12:41:51 -03:00
|
|
|
#define LOAD_BUILD_CLASS 71
|
* Remove PRINT_ITEM(_TO), PRINT_NEWLINE(_TO) opcodes.
* Fix some docstrings and one Print -> print.
* Fix test_{class,code,descrtut,dis,extcall,parser,popen,pkg,subprocess,syntax,traceback}.
These were the ones that generated code with a print statement.
In most remaining failing tests there's an issue with the soft space.
2007-02-09 17:28:07 -04:00
|
|
|
|
2000-08-24 17:09:45 -03:00
|
|
|
#define INPLACE_LSHIFT 75
|
|
|
|
#define INPLACE_RSHIFT 76
|
|
|
|
#define INPLACE_AND 77
|
|
|
|
#define INPLACE_XOR 78
|
|
|
|
#define INPLACE_OR 79
|
1990-11-18 13:27:39 -04:00
|
|
|
#define BREAK_LOOP 80
|
2006-02-27 18:32:47 -04:00
|
|
|
#define WITH_CLEANUP 81
|
2007-03-18 12:41:51 -03:00
|
|
|
|
1990-11-18 13:27:39 -04:00
|
|
|
#define RETURN_VALUE 83
|
2000-08-17 19:55:00 -03:00
|
|
|
#define IMPORT_STAR 84
|
2007-11-06 17:34:58 -04:00
|
|
|
|
2001-06-18 19:08:13 -03:00
|
|
|
#define YIELD_VALUE 86
|
1990-11-18 13:27:39 -04:00
|
|
|
#define POP_BLOCK 87
|
|
|
|
#define END_FINALLY 88
|
2008-06-11 12:59:43 -03:00
|
|
|
#define POP_EXCEPT 89
|
1990-11-18 13:27:39 -04:00
|
|
|
|
|
|
|
#define HAVE_ARGUMENT 90 /* Opcodes from here have an argument: */
|
|
|
|
|
|
|
|
#define STORE_NAME 90 /* Index in name list */
|
|
|
|
#define DELETE_NAME 91 /* "" */
|
2000-08-11 19:15:52 -03:00
|
|
|
#define UNPACK_SEQUENCE 92 /* Number of sequence items */
|
2001-04-20 16:13:02 -03:00
|
|
|
#define FOR_ITER 93
|
Merged revisions 55225-55227,55229-55269 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/p3yk
................
r55238 | guido.van.rossum | 2007-05-10 16:46:05 -0700 (Thu, 10 May 2007) | 9 lines
Merged revisions 55227 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r55227 | guido.van.rossum | 2007-05-10 10:20:15 -0700 (Thu, 10 May 2007) | 2 lines
Fix a bug in test_c_api() that caused a negative refcount.
........
................
r55246 | neal.norwitz | 2007-05-11 00:01:52 -0700 (Fri, 11 May 2007) | 1 line
Remove commands.getstatus() it is obsolete.
................
r55248 | neal.norwitz | 2007-05-11 00:29:05 -0700 (Fri, 11 May 2007) | 2 lines
Remove bsddb185 support.
................
r55249 | neal.norwitz | 2007-05-11 00:29:50 -0700 (Fri, 11 May 2007) | 1 line
Remove bsddb185 module too
................
r55250 | neal.norwitz | 2007-05-11 00:32:13 -0700 (Fri, 11 May 2007) | 1 line
bsddb185: Gotta remove from the file checked in, not Setup
................
r55251 | neal.norwitz | 2007-05-11 00:53:26 -0700 (Fri, 11 May 2007) | 1 line
Remove obsolete IRIX modules (as much as I could find, there is probably more)
................
r55252 | neal.norwitz | 2007-05-11 00:55:35 -0700 (Fri, 11 May 2007) | 1 line
Remove SGI turd.
................
r55254 | georg.brandl | 2007-05-11 03:11:01 -0700 (Fri, 11 May 2007) | 2 lines
Add a case for set comprehensions to the "cannot assign to" switch.
................
r55255 | georg.brandl | 2007-05-11 03:11:25 -0700 (Fri, 11 May 2007) | 2 lines
Fix wrong imports.
................
r55261 | georg.brandl | 2007-05-11 07:37:48 -0700 (Fri, 11 May 2007) | 2 lines
Remove removed tex files.
................
r55262 | georg.brandl | 2007-05-11 08:28:41 -0700 (Fri, 11 May 2007) | 2 lines
Commit PEP 3132 implementation.
................
r55264 | georg.brandl | 2007-05-11 08:50:19 -0700 (Fri, 11 May 2007) | 2 lines
Check in the inevitable AST version number and format Py_ssize_t with %zd.
................
r55265 | neal.norwitz | 2007-05-11 09:12:22 -0700 (Fri, 11 May 2007) | 1 line
Remove mention of os.popen* and popen2.* since these will be removed.
................
r55266 | neal.norwitz | 2007-05-11 09:19:57 -0700 (Fri, 11 May 2007) | 1 line
Get doc to build again (almost, the doc is fine)
................
r55267 | neal.norwitz | 2007-05-11 09:21:02 -0700 (Fri, 11 May 2007) | 1 line
Really get doc to build (remove use of string module)
................
r55269 | neal.norwitz | 2007-05-11 09:29:43 -0700 (Fri, 11 May 2007) | 1 line
Add some notes to cleanup later
................
2007-05-11 13:50:42 -03:00
|
|
|
#define UNPACK_EX 94 /* Num items before variable part +
|
|
|
|
(Num items after variable part << 8) */
|
2000-08-11 19:15:52 -03:00
|
|
|
|
1990-11-18 13:27:39 -04:00
|
|
|
#define STORE_ATTR 95 /* Index in name list */
|
|
|
|
#define DELETE_ATTR 96 /* "" */
|
1991-12-10 09:59:17 -04:00
|
|
|
#define STORE_GLOBAL 97 /* "" */
|
|
|
|
#define DELETE_GLOBAL 98 /* "" */
|
2000-08-24 17:09:45 -03:00
|
|
|
#define DUP_TOPX 99 /* number of items to duplicate */
|
1990-11-18 13:27:39 -04:00
|
|
|
#define LOAD_CONST 100 /* Index in const list */
|
|
|
|
#define LOAD_NAME 101 /* Index in name list */
|
|
|
|
#define BUILD_TUPLE 102 /* Number of tuple items */
|
|
|
|
#define BUILD_LIST 103 /* Number of list items */
|
2006-08-28 12:27:34 -03:00
|
|
|
#define BUILD_SET 104 /* Number of set items */
|
|
|
|
#define BUILD_MAP 105 /* Always zero for now */
|
|
|
|
#define LOAD_ATTR 106 /* Index in name list */
|
|
|
|
#define COMPARE_OP 107 /* Comparison operator */
|
|
|
|
#define IMPORT_NAME 108 /* Index in name list */
|
|
|
|
#define IMPORT_FROM 109 /* Index in name list */
|
1990-11-18 13:27:39 -04:00
|
|
|
|
|
|
|
#define JUMP_FORWARD 110 /* Number of bytes to skip */
|
2009-02-24 22:25:04 -04:00
|
|
|
#define JUMP_IF_FALSE_OR_POP 111 /* Target byte offset from beginning of code */
|
|
|
|
#define JUMP_IF_TRUE_OR_POP 112 /* "" */
|
|
|
|
#define JUMP_ABSOLUTE 113 /* "" */
|
|
|
|
#define POP_JUMP_IF_FALSE 114 /* "" */
|
|
|
|
#define POP_JUMP_IF_TRUE 115 /* "" */
|
1990-11-18 13:27:39 -04:00
|
|
|
|
1991-04-04 06:45:01 -04:00
|
|
|
#define LOAD_GLOBAL 116 /* Index in name list */
|
|
|
|
|
2001-02-01 18:48:12 -04:00
|
|
|
#define CONTINUE_LOOP 119 /* Start of loop (absolute) */
|
Merged revisions 56301-56442 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/p3yk
................
r56322 | kurt.kaiser | 2007-07-12 11:35:03 -0700 (Thu, 12 Jul 2007) | 2 lines
Replace obscure code which was failing in py3k.
................
r56323 | kurt.kaiser | 2007-07-12 11:44:12 -0700 (Thu, 12 Jul 2007) | 3 lines
1. Remove new division option
2. Update IDLE version to 3.0x
................
r56327 | kurt.kaiser | 2007-07-12 12:20:20 -0700 (Thu, 12 Jul 2007) | 5 lines
Fix another instance of this defect in Tkinter, and one in IDLE.
Patch 1724999 by Ali Gholami Rudi -- avoid complaints about dict size
change during iter in destroy call.
................
r56339 | georg.brandl | 2007-07-13 03:07:25 -0700 (Fri, 13 Jul 2007) | 2 lines
Fix #1753310: regrtest -x doesn't work anymore
................
r56361 | kurt.kaiser | 2007-07-13 18:25:24 -0700 (Fri, 13 Jul 2007) | 2 lines
convert a map() iterator to a list to get this working.
................
r56362 | kurt.kaiser | 2007-07-13 18:53:45 -0700 (Fri, 13 Jul 2007) | 2 lines
Was modifying dict during iteration.
................
r56376 | collin.winter | 2007-07-14 11:56:19 -0700 (Sat, 14 Jul 2007) | 1 line
Add an example of class decorators to test_grammar.
................
r56377 | collin.winter | 2007-07-14 12:00:17 -0700 (Sat, 14 Jul 2007) | 1 line
Add a basic example of dictcomps to test_grammar.
................
r56413 | neal.norwitz | 2007-07-17 00:21:18 -0700 (Tue, 17 Jul 2007) | 149 lines
Merged revisions 56202-56412 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r56204 | ronald.oussoren | 2007-07-08 23:02:21 -0700 (Sun, 08 Jul 2007) | 2 lines
Patch 1693258: Fix for duplicate "preferences" menu-OS X
........
r56207 | ronald.oussoren | 2007-07-09 01:41:15 -0700 (Mon, 09 Jul 2007) | 4 lines
Patch 1673122: be explicit about which libtool to use, to avoid name clashes
when a users install GNU libtool early in his PATH
........
r56280 | georg.brandl | 2007-07-11 12:41:49 -0700 (Wed, 11 Jul 2007) | 2 lines
Fix #1752132: wrong comment in opcode description.
........
r56293 | georg.brandl | 2007-07-12 01:05:45 -0700 (Thu, 12 Jul 2007) | 3 lines
Patch #1752270, #1750931: complain if urllib2 add_handler called
without handler.
........
r56296 | georg.brandl | 2007-07-12 01:11:29 -0700 (Thu, 12 Jul 2007) | 2 lines
Patch #1739696: use code.co_code only if really necessary
........
r56298 | georg.brandl | 2007-07-12 01:38:00 -0700 (Thu, 12 Jul 2007) | 3 lines
Patch #1673759: add a missing overflow check when formatting floats
with %G.
........
r56302 | georg.brandl | 2007-07-12 02:06:41 -0700 (Thu, 12 Jul 2007) | 2 lines
Patch #1731659: improve time.strptime docs.
........
r56304 | georg.brandl | 2007-07-12 02:24:04 -0700 (Thu, 12 Jul 2007) | 2 lines
Patch #1731169: clean up expected skips list.
........
r56306 | georg.brandl | 2007-07-12 02:37:49 -0700 (Thu, 12 Jul 2007) | 3 lines
Bug #1637365: add subsection about "__name__ == __main__" to the
Python tutorial.
........
r56308 | georg.brandl | 2007-07-12 02:59:22 -0700 (Thu, 12 Jul 2007) | 5 lines
Patch #1675424: Added tests for uncovered code in the zipfile module.
The KeyError raised by Zipfile.getinfo for nonexistent names now has
a descriptive message.
........
r56340 | facundo.batista | 2007-07-13 03:43:44 -0700 (Fri, 13 Jul 2007) | 6 lines
Added tests for basic behavior of DateTime, Binary, and Fault classes
and the escape function. Check that marshalling recursive sequences &
dicts raises TypeError. Check that marshalling out-of-range ints
raises OverflowError [Alan McIntyre - GSoC]
........
r56345 | raymond.hettinger | 2007-07-13 05:09:41 -0700 (Fri, 13 Jul 2007) | 1 line
Correct the docs for takewhile(). Improve the recipe for nth(). Should be backported
........
r56348 | thomas.heller | 2007-07-13 06:59:39 -0700 (Fri, 13 Jul 2007) | 4 lines
Repair COMError. Since exceptions are new style classes now, setting
the methods and docstring after the type creation does not work, they
must be in the dictionary before creating the type.
........
r56349 | thomas.heller | 2007-07-13 07:18:06 -0700 (Fri, 13 Jul 2007) | 1 line
Add tests for _ctypes.COMError.
........
r56350 | thomas.heller | 2007-07-13 09:50:43 -0700 (Fri, 13 Jul 2007) | 4 lines
Do not try to load the GLUT library in the ctypes tests. This test
adds little value, but has a large problem on OS X, as explained in
SF# 1581906.
........
r56352 | thomas.heller | 2007-07-13 10:12:23 -0700 (Fri, 13 Jul 2007) | 3 lines
Fix for SF# 1701409: segfault in c_char_p of ctypes. The repr output
of c_char_p and c_wchar_p has changed as a sideeffect.
........
r56355 | thomas.heller | 2007-07-13 10:46:54 -0700 (Fri, 13 Jul 2007) | 3 lines
Fix for SF# 1649098: avoid zero-sized array declaration in structure.
........
r56357 | thomas.heller | 2007-07-13 12:51:55 -0700 (Fri, 13 Jul 2007) | 3 lines
PyType_stgdict() returns a borrowed reference which must not be
Py_DECREF'd.
........
r56360 | barry.warsaw | 2007-07-13 15:12:58 -0700 (Fri, 13 Jul 2007) | 10 lines
In response to this SF bug:
[ 1752723 ] email.message_from_string: initial line gets discarded
I added a test to assert that when the first line of text passed to
message_from_string() contains a leading space, the message ends up with the
appropriate FirstHeaderLineIsContinuationDefect on its defects list.
The bug is invalid.
........
r56364 | georg.brandl | 2007-07-14 10:12:23 -0700 (Sat, 14 Jul 2007) | 2 lines
Bug #1753406: missing \versionadded for subprocess.check_call.
........
r56366 | georg.brandl | 2007-07-14 10:32:41 -0700 (Sat, 14 Jul 2007) | 2 lines
Clarify webbrowser.open description.
........
r56380 | andrew.kuchling | 2007-07-14 13:58:21 -0700 (Sat, 14 Jul 2007) | 1 line
Typo fix
........
r56382 | andrew.kuchling | 2007-07-14 14:56:19 -0700 (Sat, 14 Jul 2007) | 7 lines
Avoid exception if there's a stray directory inside a Maildir folder.
The Maildir specification doesn't seem to say anything about this
situation, and it can happen if you're keeping a Maildir mailbox in
Subversion (.svn directories) or some similar system. The patch just
ignores directories in the cur/, new/, tmp/ folders.
........
r56392 | facundo.batista | 2007-07-14 15:41:45 -0700 (Sat, 14 Jul 2007) | 6 lines
First version. Includes tests for helper functions: read, write,
_exception, readwrite, closeall, compact_traceback; and for classes
dispatcher, dispatcher_with_send, and file_wrapper.
[Alan McIntyre - GSoC]
........
r56399 | facundo.batista | 2007-07-15 13:30:39 -0700 (Sun, 15 Jul 2007) | 5 lines
Changed the used port and commented out some tests that uses
a non documented function that appers to uses resources
not present in Windows.
........
r56412 | facundo.batista | 2007-07-16 19:19:39 -0700 (Mon, 16 Jul 2007) | 6 lines
Prevent asyncore.dispatcher tests from hanging by adding loop counters
to server & client, and by adding asyncore.close_all calls in
tearDown. Also choose correct expected logging results based on the
value of __debug__ [Alan McIntyre - GSoC]
........
................
r56442 | guido.van.rossum | 2007-07-18 10:26:38 -0700 (Wed, 18 Jul 2007) | 14 lines
Merged revisions 56413-56441 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r56439 | georg.brandl | 2007-07-17 23:37:55 -0700 (Tue, 17 Jul 2007) | 2 lines
Use "Unix" as platform name, not "UNIX".
........
r56441 | guido.van.rossum | 2007-07-18 10:19:14 -0700 (Wed, 18 Jul 2007) | 3 lines
SF patch# 1755885 by Kurt Kaiser: show location of Unicode escape errors.
(Slightly tweaked for style and refcounts.)
........
................
2007-07-18 15:15:48 -03:00
|
|
|
#define SETUP_LOOP 120 /* Target address (relative) */
|
1990-11-18 13:27:39 -04:00
|
|
|
#define SETUP_EXCEPT 121 /* "" */
|
|
|
|
#define SETUP_FINALLY 122 /* "" */
|
|
|
|
|
1993-03-30 09:18:41 -04:00
|
|
|
#define LOAD_FAST 124 /* Local variable number */
|
|
|
|
#define STORE_FAST 125 /* Local variable number */
|
|
|
|
#define DELETE_FAST 126 /* Local variable number */
|
|
|
|
|
1995-07-07 19:32:10 -03:00
|
|
|
#define RAISE_VARARGS 130 /* Number of raise arguments (1, 2 or 3) */
|
2000-03-28 19:49:17 -04:00
|
|
|
/* CALL_FUNCTION_XXX opcodes defined below depend on this definition */
|
1995-07-07 19:32:10 -03:00
|
|
|
#define CALL_FUNCTION 131 /* #args + (#kwargs<<8) */
|
2007-03-18 12:41:51 -03:00
|
|
|
#define MAKE_FUNCTION 132 /* #defaults + #kwdefaults<<8 + #annotations<<16 */
|
1996-07-30 13:41:26 -03:00
|
|
|
#define BUILD_SLICE 133 /* Number of items */
|
1995-07-07 19:32:10 -03:00
|
|
|
|
2007-03-18 12:41:51 -03:00
|
|
|
#define MAKE_CLOSURE 134 /* same as MAKE_FUNCTION */
|
PEP 227 implementation
The majority of the changes are in the compiler. The mainloop changes
primarily to implement the new opcodes and to pass a function's
closure to eval_code2(). Frames and functions got new slots to hold
the closure.
Include/compile.h
Add co_freevars and co_cellvars slots to code objects.
Update PyCode_New() to take freevars and cellvars as arguments
Include/funcobject.h
Add func_closure slot to function objects.
Add GetClosure()/SetClosure() functions (and corresponding
macros) for getting at the closure.
Include/frameobject.h
PyFrame_New() now takes a closure.
Include/opcode.h
Add four new opcodes: MAKE_CLOSURE, LOAD_CLOSURE, LOAD_DEREF,
STORE_DEREF.
Remove comment about old requirement for opcodes to fit in 7
bits.
compile.c
Implement changes to code objects for co_freevars and co_cellvars.
Modify symbol table to use st_cur_name (string object for the name
of the current scope) and st_cur_children (list of nested blocks).
Also define st_nested, which might more properly be called
st_cur_nested. Add several DEF_XXX flags to track def-use
information for free variables.
New or modified functions of note:
com_make_closure(struct compiling *, PyCodeObject *)
Emit LOAD_CLOSURE opcodes as needed to pass cells for free
variables into nested scope.
com_addop_varname(struct compiling *, int, char *)
Emits opcodes for LOAD_DEREF and STORE_DEREF.
get_ref_type(struct compiling *, char *name)
Return NAME_CLOSURE if ref type is FREE or CELL
symtable_load_symbols(struct compiling *)
Decides what variables are cell or free based on def-use info.
Can now raise SyntaxError if nested scopes are mixed with
exec or from blah import *.
make_scope_info(PyObject *, PyObject *, int, int)
Helper functions for symtable scope stack.
symtable_update_free_vars(struct symtable *)
After a code block has been analyzed, it must check each of
its children for free variables that are not defined in the
block. If a variable is free in a child and not defined in
the parent, then it is defined by block the enclosing the
current one or it is a global. This does the right logic.
symtable_add_use() is now a macro for symtable_add_def()
symtable_assign(struct symtable *, node *)
Use goto instead of for (;;)
Fixed bug in symtable where name of keyword argument in function
call was treated as assignment in the scope of the call site. Ex:
def f():
g(a=2) # a was considered a local of f
ceval.c
eval_code2() now take one more argument, a closure.
Implement LOAD_CLOSURE, LOAD_DEREF, STORE_DEREF, MAKE_CLOSURE>
Also: When name error occurs for global variable, report that the
name was global in the error mesage.
Objects/frameobject.c
Initialize f_closure to be a tuple containing space for cellvars
and freevars. f_closure is NULL if neither are present.
Objects/funcobject.c
Add support for func_closure.
Python/import.c
Change the magic number.
Python/marshal.c
Track changes to code objects.
2001-01-25 16:06:59 -04:00
|
|
|
#define LOAD_CLOSURE 135 /* Load free variable from closure */
|
|
|
|
#define LOAD_DEREF 136 /* Load and dereference from closure cell */
|
|
|
|
#define STORE_DEREF 137 /* Store into cell */
|
|
|
|
|
2000-03-28 19:49:17 -04:00
|
|
|
/* The next 3 opcodes must be contiguous and satisfy
|
2000-03-28 20:10:03 -04:00
|
|
|
(CALL_FUNCTION_VAR - CALL_FUNCTION) & 3 == 1 */
|
2000-03-28 19:49:17 -04:00
|
|
|
#define CALL_FUNCTION_VAR 140 /* #args + (#kwargs<<8) */
|
|
|
|
#define CALL_FUNCTION_KW 141 /* #args + (#kwargs<<8) */
|
|
|
|
#define CALL_FUNCTION_VAR_KW 142 /* #args + (#kwargs<<8) */
|
|
|
|
|
2000-08-23 21:32:09 -03:00
|
|
|
/* Support for opargs more than 16 bits long */
|
|
|
|
#define EXTENDED_ARG 143
|
|
|
|
|
2008-12-18 07:06:25 -04:00
|
|
|
#define LIST_APPEND 145
|
|
|
|
#define SET_ADD 146
|
|
|
|
#define MAP_ADD 147
|
|
|
|
|
2002-01-01 15:59:11 -04:00
|
|
|
|
2008-06-11 12:59:43 -03:00
|
|
|
/* EXCEPT_HANDLER is a special, implicit block type which is created when
|
|
|
|
entering an except handler. It is not an opcode but we define it here
|
|
|
|
as we want it to be available to both frameobject.c and ceval.c, while
|
|
|
|
remaining private.*/
|
|
|
|
#define EXCEPT_HANDLER 257
|
|
|
|
|
|
|
|
|
2002-01-01 15:59:11 -04:00
|
|
|
enum cmp_op {PyCmp_LT=Py_LT, PyCmp_LE=Py_LE, PyCmp_EQ=Py_EQ, PyCmp_NE=Py_NE, PyCmp_GT=Py_GT, PyCmp_GE=Py_GE,
|
|
|
|
PyCmp_IN, PyCmp_NOT_IN, PyCmp_IS, PyCmp_IS_NOT, PyCmp_EXC_MATCH, PyCmp_BAD};
|
1990-12-20 11:06:42 -04:00
|
|
|
|
|
|
|
#define HAS_ARG(op) ((op) >= HAVE_ARGUMENT)
|
1993-07-28 06:05:47 -03:00
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
#endif /* !Py_OPCODE_H */
|