# HG changeset patch # User Adrian Wielgosik # Date 1480243175 -3600 # Sun Nov 27 11:39:35 2016 +0100 # Node ID f82399cc67d61efc21af6673e6fd0047a1c0fbe1 # Parent 876bee0bd0ba55d64687e233021425f85fb57e05 indices diff -r 876bee0bd0ba -r f82399cc67d6 Python/peephole.c --- a/Python/peephole.c Sat Nov 26 14:04:40 2016 -0800 +++ b/Python/peephole.c Sun Nov 27 11:39:35 2016 +0100 @@ -25,7 +25,7 @@ #define CONST_STACK_CREATE() { \ const_stack_size = 256; \ - const_stack = PyMem_New(PyObject *, const_stack_size); \ + const_stack = PyMem_New(unsigned int, const_stack_size); \ if (!const_stack) { \ PyErr_NoMemory(); \ goto exitError; \ @@ -40,19 +40,17 @@ #define CONST_STACK_LEN() ((unsigned)(const_stack_top + 1)) #define CONST_STACK_PUSH_OP(i) do { \ - PyObject *_x; \ assert(_Py_OPCODE(codestr[i]) == LOAD_CONST); \ assert(PyList_GET_SIZE(consts) > (Py_ssize_t)get_arg(codestr, i)); \ - _x = PyList_GET_ITEM(consts, get_arg(codestr, i)); \ if (++const_stack_top >= const_stack_size) { \ const_stack_size *= 2; \ - PyMem_Resize(const_stack, PyObject *, const_stack_size); \ + PyMem_Resize(const_stack, unsigned int, const_stack_size); \ if (!const_stack) { \ PyErr_NoMemory(); \ goto exitError; \ } \ } \ - const_stack[const_stack_top] = _x; \ + const_stack[const_stack_top] = get_arg(codestr, i); \ in_consts = 1; \ } while(0) @@ -61,13 +59,15 @@ } while(0) #define CONST_STACK_LASTN(i) \ - &const_stack[CONST_STACK_LEN() - i] + (&const_stack[CONST_STACK_LEN() - i]) #define CONST_STACK_POP(i) do { \ assert(CONST_STACK_LEN() >= i); \ const_stack_top -= i; \ } while(0) +#define CONST_GET(i) (PyList_GET_ITEM((consts), (i))) + /* Scans back N consecutive LOAD_CONST instructions, skipping NOPs, returns index of the Nth last's LOAD_CONST's EXTENDED_ARG prefix. Callers are responsible to check CONST_STACK_LEN beforehand. @@ -179,7 +179,7 @@ static Py_ssize_t fold_tuple_on_constants(_Py_CODEUNIT *codestr, Py_ssize_t c_start, Py_ssize_t opcode_end, unsigned char opcode, - PyObject *consts, PyObject **objs, int n) + PyObject *consts, unsigned int *const_ids, int n) { PyObject *newconst, *constant; Py_ssize_t i, len_consts; @@ -193,7 +193,7 @@ return -1; } for (i=0 ; i