From 3e1c7167d86a2a928cdcb659094aa10bb5550c4c Mon Sep 17 00:00:00 2001 From: Eric Snow Date: Tue, 8 Jun 2021 16:01:34 -0600 Subject: bpo-43693: Un-revert commit f3fa63e. (#26609) This was reverted in GH-26596 (commit 6d518bb) due to some bad memory accesses. * Add the MAKE_CELL opcode. (gh-26396) The memory accesses have been fixed. https://bugs.python.org/issue43693 --- Include/cpython/code.h | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'Include/cpython/code.h') diff --git a/Include/cpython/code.h b/Include/cpython/code.h index 773df7cb9a..a3db7d9d5e 100644 --- a/Include/cpython/code.h +++ b/Include/cpython/code.h @@ -2,9 +2,16 @@ # error "this header file must not be included directly" #endif +/* Each instruction in a code object is a fixed-width value, + * currently 2 bytes: 1-byte opcode + 1-byte oparg. The EXTENDED_ARG + * opcode allows for larger values but the current limit is 3 uses + * of EXTENDED_ARG (see Python/wordcode_helpers.h), for a maximum + * 32-bit value. This aligns with the note in Python/compile.c + * (compiler_addop_i_line) indicating that the max oparg value is + * 2**32 - 1, rather than INT_MAX. + */ + typedef uint16_t _Py_CODEUNIT; -// Each oparg must fit in the second half of _Py_CODEUNIT, hence 8 bits. -#define _Py_MAX_OPARG 255 #ifdef WORDS_BIGENDIAN # define _Py_OPCODE(word) ((word) >> 8) -- cgit v1.2.1