• Home
  • Raw
  • Download

Lines Matching refs:codestr

31 lastn_const_start(const _Py_CODEUNIT *codestr, Py_ssize_t i, Py_ssize_t n)  in lastn_const_start()  argument
37 if (_Py_OPCODE(codestr[i]) == LOAD_CONST) { in lastn_const_start()
39 while (i > 0 && _Py_OPCODE(codestr[i-1]) == EXTENDED_ARG) { in lastn_const_start()
46 assert(_Py_OPCODE(codestr[i]) == EXTENDED_ARG); in lastn_const_start()
53 find_op(const _Py_CODEUNIT *codestr, Py_ssize_t codelen, Py_ssize_t i) in find_op() argument
55 while (i < codelen && _Py_OPCODE(codestr[i]) == EXTENDED_ARG) { in find_op()
64 get_arg(const _Py_CODEUNIT *codestr, Py_ssize_t i) in get_arg() argument
67 unsigned int oparg = _Py_OPARG(codestr[i]); in get_arg()
68 if (i >= 1 && _Py_OPCODE(word = codestr[i-1]) == EXTENDED_ARG) { in get_arg()
70 if (i >= 2 && _Py_OPCODE(word = codestr[i-2]) == EXTENDED_ARG) { in get_arg()
72 if (i >= 3 && _Py_OPCODE(word = codestr[i-3]) == EXTENDED_ARG) { in get_arg()
82 fill_nops(_Py_CODEUNIT *codestr, Py_ssize_t start, Py_ssize_t end) in fill_nops() argument
84 memset(codestr + start, NOP, (end - start) * sizeof(_Py_CODEUNIT)); in fill_nops()
91 set_arg(_Py_CODEUNIT *codestr, Py_ssize_t i, unsigned int oparg) in set_arg() argument
93 unsigned int curarg = get_arg(codestr, i); in set_arg()
103 write_op_arg(codestr + i + 1 - curilen, _Py_OPCODE(codestr[i]), oparg, newilen); in set_arg()
104 fill_nops(codestr, i + 1 - curilen + newilen, i + 1); in set_arg()
112 copy_op_arg(_Py_CODEUNIT *codestr, Py_ssize_t i, unsigned char op, in copy_op_arg() argument
119 write_op_arg(codestr + maxi - ilen, op, oparg, ilen); in copy_op_arg()
120 fill_nops(codestr, i, maxi - ilen); in copy_op_arg()
131 fold_tuple_on_constants(_Py_CODEUNIT *codestr, Py_ssize_t codelen, in fold_tuple_on_constants() argument
146 pos = find_op(codestr, codelen, pos); in fold_tuple_on_constants()
147 assert(_Py_OPCODE(codestr[pos]) == LOAD_CONST); in fold_tuple_on_constants()
149 unsigned int arg = get_arg(codestr, pos); in fold_tuple_on_constants()
162 return copy_op_arg(codestr, c_start, LOAD_CONST, in fold_tuple_on_constants()
229 _Py_CODEUNIT *codestr = NULL; in PyCode_Optimize() local
258 codestr = (_Py_CODEUNIT *)PyMem_Malloc(codelen); in PyCode_Optimize()
259 if (codestr == NULL) { in PyCode_Optimize()
263 memcpy(codestr, PyBytes_AS_STRING(code), codelen); in PyCode_Optimize()
266 blocks = markblocks(codestr, codelen); in PyCode_Optimize()
271 for (i=find_op(codestr, codelen, 0) ; i<codelen ; i=nexti) { in PyCode_Optimize()
272 opcode = _Py_OPCODE(codestr[i]); in PyCode_Optimize()
274 while (op_start >= 1 && _Py_OPCODE(codestr[op_start-1]) == EXTENDED_ARG) { in PyCode_Optimize()
279 while (nexti < codelen && _Py_OPCODE(codestr[nexti]) == EXTENDED_ARG) in PyCode_Optimize()
281 nextop = nexti < codelen ? _Py_OPCODE(codestr[nexti]) : 0; in PyCode_Optimize()
294 !PyObject_IsTrue(PyList_GET_ITEM(consts, get_arg(codestr, i)))) in PyCode_Optimize()
296 fill_nops(codestr, op_start, nexti + 1); in PyCode_Optimize()
305 j = get_arg(codestr, i); in PyCode_Optimize()
307 h = lastn_const_start(codestr, op_start, j); in PyCode_Optimize()
309 h = fold_tuple_on_constants(codestr, codelen, in PyCode_Optimize()
316 j != get_arg(codestr, nexti)) in PyCode_Optimize()
319 fill_nops(codestr, op_start, nexti + 1); in PyCode_Optimize()
321 codestr[op_start] = PACKOPARG(ROT_TWO, 0); in PyCode_Optimize()
322 fill_nops(codestr, op_start + 1, nexti + 1); in PyCode_Optimize()
324 codestr[op_start] = PACKOPARG(ROT_THREE, 0); in PyCode_Optimize()
325 codestr[op_start + 1] = PACKOPARG(ROT_TWO, 0); in PyCode_Optimize()
326 fill_nops(codestr, op_start + 2, nexti + 1); in PyCode_Optimize()
346 h = get_arg(codestr, i) / sizeof(_Py_CODEUNIT); in PyCode_Optimize()
347 tgt = find_op(codestr, codelen, h); in PyCode_Optimize()
349 j = _Py_OPCODE(codestr[tgt]); in PyCode_Optimize()
356 h = set_arg(codestr, i, get_arg(codestr, tgt)); in PyCode_Optimize()
362 h = set_arg(codestr, i, (tgt + 1) * sizeof(_Py_CODEUNIT)); in PyCode_Optimize()
369 codestr[nexti] = PACKOPARG(j, _Py_OPARG(codestr[nexti])); in PyCode_Optimize()
387 h = GETJUMPTGT(codestr, i); in PyCode_Optimize()
388 tgt = find_op(codestr, codelen, h); in PyCode_Optimize()
391 _Py_OPCODE(codestr[tgt]) == RETURN_VALUE) { in PyCode_Optimize()
392 codestr[op_start] = PACKOPARG(RETURN_VALUE, 0); in PyCode_Optimize()
393 fill_nops(codestr, op_start + 1, i + 1); in PyCode_Optimize()
394 } else if (UNCONDITIONAL_JUMP(_Py_OPCODE(codestr[tgt]))) { in PyCode_Optimize()
395 j = GETJUMPTGT(codestr, tgt); in PyCode_Optimize()
405 copy_op_arg(codestr, op_start, opcode, j, i + 1); in PyCode_Optimize()
416 fill_nops(codestr, i + 1, h); in PyCode_Optimize()
417 nexti = find_op(codestr, codelen, h); in PyCode_Optimize()
428 if (_Py_OPCODE(codestr[i]) == NOP) in PyCode_Optimize()
447 j = _Py_OPARG(codestr[i]); in PyCode_Optimize()
448 while (_Py_OPCODE(codestr[i]) == EXTENDED_ARG) { in PyCode_Optimize()
450 j = j<<8 | _Py_OPARG(codestr[i]); in PyCode_Optimize()
452 opcode = _Py_OPCODE(codestr[i]); in PyCode_Optimize()
480 write_op_arg(codestr + h, opcode, j, nexti); in PyCode_Optimize()
486 code = PyBytes_FromStringAndSize((char *)codestr, h * sizeof(_Py_CODEUNIT)); in PyCode_Optimize()
487 PyMem_Free(codestr); in PyCode_Optimize()
496 PyMem_Free(codestr); in PyCode_Optimize()