]> granicus.if.org Git - python/commitdiff
* Improve readability and remove data dependencies by converting
authorRaymond Hettinger <python@rcn.com>
Wed, 7 Apr 2004 13:17:27 +0000 (13:17 +0000)
committerRaymond Hettinger <python@rcn.com>
Wed, 7 Apr 2004 13:17:27 +0000 (13:17 +0000)
pre-increment forms to post-increment forms.  Post-incrementing
also eliminates the need for negative array indices for oparg fetches.

* In exception handling code, check for class based exceptions before
  the older string based exceptions.

Python/ceval.c

index de57ca72b7116655dcd8fa9cdccef1affa224e12..9ea2772b09a5e824fe52d1a25a178251d7f966fe 100644 (file)
@@ -625,7 +625,8 @@ eval_frame(PyFrameObject *f)
 
 #define INSTR_OFFSET() (next_instr - first_instr)
 #define NEXTOP()       (*next_instr++)
-#define NEXTARG()      (next_instr += 2, (next_instr[-1]<<8) + next_instr[-2])
+#define OPARG()                (next_instr[0] + (next_instr[1]<<8))
+#define SKIPARG()      (next_instr += 2)
 #define JUMPTO(x)      (next_instr = first_instr + (x))
 #define JUMPBY(x)      (next_instr += (x))
 
@@ -861,8 +862,10 @@ eval_frame(PyFrameObject *f)
                /* Extract opcode and argument */
 
                opcode = NEXTOP();
-               if (HAS_ARG(opcode))
-                       oparg = NEXTARG();
+               if (HAS_ARG(opcode)) {
+                       oparg = OPARG();
+                       SKIPARG();
+               }
          dispatch_opcode:
 #ifdef DYNAMIC_EXECUTION_PROFILE
 #ifdef DXPAIRS
@@ -1653,7 +1656,7 @@ eval_frame(PyFrameObject *f)
                                if (why & (WHY_RETURN | WHY_CONTINUE))
                                        retval = POP();
                        }
-                       else if (PyString_Check(v) || PyClass_Check(v)) {
+                       else if (PyClass_Check(v) || PyString_Check(v)) {
                                w = POP();
                                u = POP();
                                PyErr_Restore(v, w, u);
@@ -1892,7 +1895,7 @@ eval_frame(PyFrameObject *f)
                case BUILD_TUPLE:
                        x = PyTuple_New(oparg);
                        if (x != NULL) {
-                               for (; --oparg >= 0;) {
+                               while (oparg--) {
                                        w = POP();
                                        PyTuple_SET_ITEM(x, oparg, w);
                                }
@@ -1904,7 +1907,7 @@ eval_frame(PyFrameObject *f)
                case BUILD_LIST:
                        x =  PyList_New(oparg);
                        if (x != NULL) {
-                               for (; --oparg >= 0;) {
+                               while (oparg--) {
                                        w = POP();
                                        PyList_SET_ITEM(x, oparg, w);
                                }
@@ -2176,7 +2179,7 @@ eval_frame(PyFrameObject *f)
                                        x = NULL;
                                        break;
                                }
-                               while (--oparg >= 0) {
+                               while (oparg--) {
                                        w = POP();
                                        PyTuple_SET_ITEM(v, oparg, w);
                                }
@@ -2201,7 +2204,7 @@ eval_frame(PyFrameObject *f)
                                        x = NULL;
                                        break;
                                }
-                               while (--nfree >= 0) {
+                               while (nfree--) {
                                        w = POP();
                                        PyTuple_SET_ITEM(v, nfree, w);
                                }
@@ -2215,7 +2218,7 @@ eval_frame(PyFrameObject *f)
                                        x = NULL;
                                        break;
                                }
-                               while (--oparg >= 0) {
+                               while (oparg--) {
                                        w = POP();
                                        PyTuple_SET_ITEM(v, oparg, w);
                                }
@@ -2243,7 +2246,8 @@ eval_frame(PyFrameObject *f)
 
                case EXTENDED_ARG:
                        opcode = NEXTOP();
-                       oparg = oparg<<16 | NEXTARG();
+                       oparg = oparg<<16 | OPARG();
+                       SKIPARG();
                        goto dispatch_opcode;
 
                default:
@@ -3192,7 +3196,7 @@ maybe_call_line_trace(Py_tracefunc func, PyObject *obj,
                }
 
                if (size > 0) {
-                       while (--size >= 0) {
+                       while (size--) {
                                addr += *p++;
                                if (*p++)
                                        break;
@@ -3607,7 +3611,7 @@ update_keyword_args(PyObject *orig_kwdict, int nk, PyObject ***pp_stack,
        }
        if (kwdict == NULL)
                return NULL;
-       while (--nk >= 0) {
+       while (nk--) {
                int err;
                PyObject *value = EXT_POP(*pp_stack);
                PyObject *key = EXT_POP(*pp_stack);
@@ -3652,7 +3656,7 @@ update_star_args(int nstack, int nstar, PyObject *stararg,
                        PyTuple_SET_ITEM(callargs, nstack + i, a);
                }
        }
-       while (--nstack >= 0) {
+       while (nstack--) {
                w = EXT_POP(*pp_stack);
                PyTuple_SET_ITEM(callargs, nstack, w);
        }
@@ -3667,7 +3671,7 @@ load_args(PyObject ***pp_stack, int na)
 
        if (args == NULL)
                return NULL;
-       while (--na >= 0) {
+       while (na--) {
                w = EXT_POP(*pp_stack);
                PyTuple_SET_ITEM(args, na, w);
        }