]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Removed bytecode transformation for sequence packing/unpacking.
authorRaymond Hettinger <python@rcn.com>
Fri, 20 Jun 2003 16:13:17 +0000 (16:13 +0000)
committerRaymond Hettinger <python@rcn.com>
Fri, 20 Jun 2003 16:13:17 +0000 (16:13 +0000)
It depended on the previously removed basic block checker to
prevent a jump into the middle of the transformed block.

Clears SF 757818: tuple assignment -- SystemError: unknown opcode

Python/compile.c

index 1d01a261e62246c671df88e7800e20883523a9e3..61b3c96e33394cf166c637d0cc23f9597c4fcd90 100644 (file)
@@ -363,34 +363,6 @@ optimize_code(PyObject *code, PyObject* consts)
                        SETARG(codestr, i, 4);
                        break;
 
-               /* Replace BUILD_SEQN 2 UNPACK_SEQN 2 with ROT2 JMP+2.
-                  Replace BUILD_SEQN 3 UNPACK_SEQN 3 with ROT3 ROT2 JMP+1.
-                  Note, these opcodes occur together only in assignment
-                  statements.  Accordingly, the unpack opcode is never
-                  a jump target.  */
-               case BUILD_TUPLE:
-               case BUILD_LIST:
-                       if (codestr[i+3] != UNPACK_SEQUENCE)
-                               continue;
-                       if (GETARG(codestr, i) == 2 && \
-                           GETARG(codestr, i+3) == 2) {
-                               codestr[i] = ROT_TWO;
-                               codestr[i+1] = JUMP_FORWARD;
-                               SETARG(codestr, i+1, 2);
-                               codestr[i+4] = DUP_TOP;  /* Filler codes used as NOPs */
-                               codestr[i+5] = POP_TOP;
-                               continue;
-                       } 
-                       if (GETARG(codestr, i) == 3 && \
-                           GETARG(codestr, i+3) == 3) {
-                               codestr[i] = ROT_THREE;
-                               codestr[i+1] = ROT_TWO;
-                               codestr[i+2] = JUMP_FORWARD;
-                               SETARG(codestr, i+2, 1);        
-                               codestr[i+5] = DUP_TOP;
-                       }
-                       break;
-
                /* Replace jumps to unconditional jumps */
                case FOR_ITER:
                case JUMP_FORWARD: