Home | History | Annotate | Download | only in Python

Lines Matching refs:codestr

32    Called with codestr pointing to the first LOAD_CONST.
37 tuple_of_constants(unsigned char *codestr, Py_ssize_t n, PyObject *consts)
44 assert(codestr[n*3] == BUILD_TUPLE || codestr[n*3] == BUILD_LIST);
45 assert(GETARG(codestr, (n*3)) == n);
47 assert(codestr[i*3] == LOAD_CONST);
55 arg = GETARG(codestr, (i*3));
71 memset(codestr, NOP, n*3);
72 codestr[n*3] = LOAD_CONST;
73 SETARG(codestr, (n*3), len_consts);
81 Called with codestr pointing to the first LOAD_CONST.
88 fold_binops_on_constants(unsigned char *codestr, PyObject *consts)
96 assert(codestr[0] == LOAD_CONST);
97 assert(codestr[3] == LOAD_CONST);
100 v = PyList_GET_ITEM(consts, GETARG(codestr, 0));
101 w = PyList_GET_ITEM(consts, GETARG(codestr, 3));
102 opcode = codestr[6];
183 memset(codestr, NOP, 4);
184 codestr[4] = LOAD_CONST;
185 SETARG(codestr, 4, len_consts);
190 fold_unaryops_on_constants(unsigned char *codestr, PyObject *consts)
198 assert(codestr[0] == LOAD_CONST);
201 v = PyList_GET_ITEM(consts, GETARG(codestr, 0));
202 opcode = codestr[3];
236 codestr[0] = NOP;
237 codestr[1] = LOAD_CONST;
238 SETARG(codestr, 1, len_consts);
305 unsigned char *codestr = NULL;
331 codestr = (unsigned char *)PyMem_Malloc(codelen);
332 if (codestr == NULL)
334 codestr = (unsigned char *)memcpy(codestr,
342 if (codestr[codelen-1] != RETURN_VALUE)
352 blocks = markblocks(codestr, codelen);
357 for (i=0 ; i<codelen ; i += CODESIZE(codestr[i])) {
359 opcode = codestr[i];
368 if (codestr[i+1] != POP_JUMP_IF_FALSE
371 j = GETARG(codestr, i+1);
372 codestr[i] = POP_JUMP_IF_TRUE;
373 SETARG(codestr, i, j);
374 codestr[i+3] = NOP;
383 j = GETARG(codestr, i);
385 codestr[i+3] != UNARY_NOT ||
388 SETARG(codestr, i, (j^1));
389 codestr[i+3] = NOP;
396 j = GETARG(codestr, i);
409 codestr[i] = LOAD_CONST;
410 SETARG(codestr, i, j);
419 j = GETARG(codestr, i);
420 if (codestr[i+3] != POP_JUMP_IF_FALSE ||
424 memset(codestr+i, NOP, 6);
435 j = GETARG(codestr, i);
442 codestr[i+3]==COMPARE_OP &&
444 (GETARG(codestr,i+3)==6 ||
445 GETARG(codestr,i+3)==7))) &&
446 tuple_of_constants(&codestr[h], j, consts)) {
447 assert(codestr[i] == LOAD_CONST);
451 if (codestr[i+3] != UNPACK_SEQUENCE ||
453 j != GETARG(codestr, i+3))
456 memset(codestr+i, NOP, 6);
458 codestr[i] = ROT_TWO;
459 memset(codestr+i+1, NOP, 5);
461 codestr[i] = ROT_THREE;
462 codestr[i+1] = ROT_TWO;
463 memset(codestr+i+2, NOP, 4);
484 fold_binops_on_constants(&codestr[i-6], consts)) {
486 assert(codestr[i] == LOAD_CONST);
498 fold_unaryops_on_constants(&codestr[i-3], consts)) {
500 assert(codestr[i] == LOAD_CONST);
521 tgt = GETJUMPTGT(codestr, i);
522 j = codestr[tgt];
528 tgttgt = GETJUMPTGT(codestr, tgt);
531 codestr[i] = j;
532 SETARG(codestr, i, tgttgt);
540 codestr[i] = POP_JUMP_IF_TRUE;
542 codestr[i] = POP_JUMP_IF_FALSE;
543 SETARG(codestr, i, (tgt + 3));
560 tgt = GETJUMPTGT(codestr, i);
563 codestr[tgt] == RETURN_VALUE) {
564 codestr[i] = RETURN_VALUE;
565 memset(codestr+i+1, NOP, 2);
568 if (!UNCONDITIONAL_JUMP(codestr[tgt]))
570 tgttgt = GETJUMPTGT(codestr, tgt);
577 codestr[i] = opcode;
578 SETARG(codestr, i, tgttgt);
589 if (codestr[i+4] == RETURN_VALUE &&
591 memset(codestr+i+1, NOP, 4);
592 else if (UNCONDITIONAL_JUMP(codestr[i+1]) &&
594 memset(codestr+i+1, NOP, 3);
600 for (i=0, nops=0 ; i<codelen ; i += CODESIZE(codestr[i])) {
602 if (codestr[i] == NOP)
617 opcode = codestr[i];
629 j = addrmap[GETARG(codestr, i)];
630 SETARG(codestr, i, j);
639 j = addrmap[GETARG(codestr, i) + i + 3] - addrmap[i] - 3;
640 SETARG(codestr, i, j);
645 codestr[h++] = codestr[i++];
649 code = PyString_FromStringAndSize((char *)codestr, h);
651 PyMem_Free(codestr);
663 if (codestr != NULL)
664 PyMem_Free(codestr);