mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
Issue #23450: Silenced compiler warnings and added asserts in peephole optimizer.
This commit is contained in:
parent
e9fc6699a5
commit
67559bf8f1
1 changed files with 9 additions and 3 deletions
|
@ -18,7 +18,11 @@
|
|||
|| op==JUMP_IF_FALSE_OR_POP || op==JUMP_IF_TRUE_OR_POP)
|
||||
#define JUMPS_ON_TRUE(op) (op==POP_JUMP_IF_TRUE || op==JUMP_IF_TRUE_OR_POP)
|
||||
#define GETJUMPTGT(arr, i) (GETARG(arr,i) + (ABSOLUTE_JUMP(arr[i]) ? 0 : i+3))
|
||||
#define SETARG(arr, i, val) arr[i+2] = val>>8; arr[i+1] = val & 255
|
||||
#define SETARG(arr, i, val) do { \
|
||||
assert(0 <= val && val <= 0xffff); \
|
||||
arr[i+2] = (unsigned char)(((unsigned int)val)>>8); \
|
||||
arr[i+1] = (unsigned char)(((unsigned int)val) & 255); \
|
||||
} while(0)
|
||||
#define CODESIZE(op) (HAS_ARG(op) ? 3 : 1)
|
||||
#define ISBASICBLOCK(blocks, start, bytes) \
|
||||
(blocks[start]==blocks[start+bytes-1])
|
||||
|
@ -355,7 +359,8 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names,
|
|||
unsigned char *codestr = NULL;
|
||||
unsigned char *lineno;
|
||||
int *addrmap = NULL;
|
||||
int new_line, cum_orig_line, last_line, tabsiz;
|
||||
int new_line, cum_orig_line, last_line;
|
||||
Py_ssize_t tabsiz;
|
||||
PyObject **const_stack = NULL;
|
||||
Py_ssize_t *load_const_stack = NULL;
|
||||
Py_ssize_t const_stack_top = -1;
|
||||
|
@ -660,7 +665,8 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names,
|
|||
|
||||
/* Fixup linenotab */
|
||||
for (i=0, nops=0 ; i<codelen ; i += CODESIZE(codestr[i])) {
|
||||
addrmap[i] = i - nops;
|
||||
assert(i - nops <= INT_MAX);
|
||||
addrmap[i] = (int)(i - nops);
|
||||
if (codestr[i] == NOP)
|
||||
nops++;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue