]> granicus.if.org Git - python/commitdiff
Revert 2.393, elimination of pre-decrementing, which
authorRaymond Hettinger <python@rcn.com>
Sat, 10 Apr 2004 23:34:17 +0000 (23:34 +0000)
committerRaymond Hettinger <python@rcn.com>
Sat, 10 Apr 2004 23:34:17 +0000 (23:34 +0000)
did not stand-up to additional timings.

Python/ceval.c

index 49582dcd31d71cd445ec0f00cf5db3a9d5add849..82a95a937df24e39a5d729a92ede5124f6d64690 100644 (file)
@@ -625,8 +625,7 @@ eval_frame(PyFrameObject *f)
 
 #define INSTR_OFFSET() (next_instr - first_instr)
 #define NEXTOP()       (*next_instr++)
-#define OPARG()                (next_instr[0] + (next_instr[1]<<8))
-#define SKIPARG()      (next_instr += 2)
+#define NEXTARG()      (next_instr += 2, (next_instr[-1]<<8) + next_instr[-2])
 #define JUMPTO(x)      (next_instr = first_instr + (x))
 #define JUMPBY(x)      (next_instr += (x))
 
@@ -862,10 +861,8 @@ eval_frame(PyFrameObject *f)
                /* Extract opcode and argument */
 
                opcode = NEXTOP();
-               if (HAS_ARG(opcode)) {
-                       oparg = OPARG();
-                       SKIPARG();
-               }
+               if (HAS_ARG(opcode))
+                       oparg = NEXTARG();
          dispatch_opcode:
 #ifdef DYNAMIC_EXECUTION_PROFILE
 #ifdef DXPAIRS
@@ -1901,7 +1898,7 @@ eval_frame(PyFrameObject *f)
                case BUILD_TUPLE:
                        x = PyTuple_New(oparg);
                        if (x != NULL) {
-                               while (oparg--) {
+                               for (; --oparg >= 0;) {
                                        w = POP();
                                        PyTuple_SET_ITEM(x, oparg, w);
                                }
@@ -1913,7 +1910,7 @@ eval_frame(PyFrameObject *f)
                case BUILD_LIST:
                        x =  PyList_New(oparg);
                        if (x != NULL) {
-                               while (oparg--) {
+                               for (; --oparg >= 0;) {
                                        w = POP();
                                        PyList_SET_ITEM(x, oparg, w);
                                }
@@ -2185,7 +2182,7 @@ eval_frame(PyFrameObject *f)
                                        x = NULL;
                                        break;
                                }
-                               while (oparg--) {
+                               while (--oparg >= 0) {
                                        w = POP();
                                        PyTuple_SET_ITEM(v, oparg, w);
                                }
@@ -2210,7 +2207,7 @@ eval_frame(PyFrameObject *f)
                                        x = NULL;
                                        break;
                                }
-                               while (nfree--) {
+                               while (--nfree >= 0) {
                                        w = POP();
                                        PyTuple_SET_ITEM(v, nfree, w);
                                }
@@ -2224,7 +2221,7 @@ eval_frame(PyFrameObject *f)
                                        x = NULL;
                                        break;
                                }
-                               while (oparg--) {
+                               while (--oparg >= 0) {
                                        w = POP();
                                        PyTuple_SET_ITEM(v, oparg, w);
                                }
@@ -2252,8 +2249,7 @@ eval_frame(PyFrameObject *f)
 
                case EXTENDED_ARG:
                        opcode = NEXTOP();
-                       oparg = oparg<<16 | OPARG();
-                       SKIPARG();
+                       oparg = oparg<<16 | NEXTARG();
                        goto dispatch_opcode;
 
                default:
@@ -3202,7 +3198,7 @@ maybe_call_line_trace(Py_tracefunc func, PyObject *obj,
                }
 
                if (size > 0) {
-                       while (size--) {
+                       while (--size >= 0) {
                                addr += *p++;
                                if (*p++)
                                        break;
@@ -3617,7 +3613,7 @@ update_keyword_args(PyObject *orig_kwdict, int nk, PyObject ***pp_stack,
        }
        if (kwdict == NULL)
                return NULL;
-       while (nk--) {
+       while (--nk >= 0) {
                int err;
                PyObject *value = EXT_POP(*pp_stack);
                PyObject *key = EXT_POP(*pp_stack);
@@ -3662,7 +3658,7 @@ update_star_args(int nstack, int nstar, PyObject *stararg,
                        PyTuple_SET_ITEM(callargs, nstack + i, a);
                }
        }
-       while (nstack--) {
+       while (--nstack >= 0) {
                w = EXT_POP(*pp_stack);
                PyTuple_SET_ITEM(callargs, nstack, w);
        }
@@ -3677,7 +3673,7 @@ load_args(PyObject ***pp_stack, int na)
 
        if (args == NULL)
                return NULL;
-       while (na--) {
+       while (--na >= 0) {
                w = EXT_POP(*pp_stack);
                PyTuple_SET_ITEM(args, na, w);
        }