summaryrefslogtreecommitdiffstats
path: root/Python
diff options
context:
space:
mode:
authorRaymond Hettinger <python@rcn.com>2004-04-10 23:34:17 (GMT)
committerRaymond Hettinger <python@rcn.com>2004-04-10 23:34:17 (GMT)
commit5bed456056db0b16afd97c0045796cdafeac4bd9 (patch)
tree6a2b51c3441fd2955f39b0637df221b3cf64e89f /Python
parent249369c7f074b71ab4484a61bd17eb4c3ff6485d (diff)
downloadcpython-5bed456056db0b16afd97c0045796cdafeac4bd9.zip
cpython-5bed456056db0b16afd97c0045796cdafeac4bd9.tar.gz
cpython-5bed456056db0b16afd97c0045796cdafeac4bd9.tar.bz2
Revert 2.393, elimination of pre-decrementing, which
did not stand-up to additional timings.
Diffstat (limited to 'Python')
-rw-r--r--Python/ceval.c30
1 files changed, 13 insertions, 17 deletions
diff --git a/Python/ceval.c b/Python/ceval.c
index 49582dc..82a95a9 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -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);
}