diff options
author | Tim Peters <tim.peters@gmail.com> | 2000-10-11 07:04:49 (GMT) |
---|---|---|
committer | Tim Peters <tim.peters@gmail.com> | 2000-10-11 07:04:49 (GMT) |
commit | 35ba689caba292bbe5093026eaab43957992c089 (patch) | |
tree | 17e62398d122ac07cf89ff07f8f3275c0293e16a /Python/ceval.c | |
parent | 5428c7db41a32ced1acd93b13d69a48db6932c3f (diff) | |
download | cpython-35ba689caba292bbe5093026eaab43957992c089.zip cpython-35ba689caba292bbe5093026eaab43957992c089.tar.gz cpython-35ba689caba292bbe5093026eaab43957992c089.tar.bz2 |
Attempt to fix bogus gcc -Wall warnings reported by Marc-Andre Lemburg,
by making the DUP_TOPX code utterly straightforward. This also gets rid
of all normal-case internal DUP_TOPX if/branches, and allows replacing one
POP() with TOP() in each case, so is a good idea regardless.
Diffstat (limited to 'Python/ceval.c')
-rw-r--r-- | Python/ceval.c | 92 |
1 files changed, 61 insertions, 31 deletions
diff --git a/Python/ceval.c b/Python/ceval.c index 36cdab8..b6a3add 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -708,49 +708,79 @@ eval_code2(PyCodeObject *co, PyObject *globals, PyObject *locals, case DUP_TOPX: switch (oparg) { - case 5: - case 4: - case 3: - case 2: case 1: + x = TOP(); + Py_INCREF(x); + PUSH(x); + continue; + case 2: + x = POP(); + Py_INCREF(x); + w = TOP(); + Py_INCREF(w); + PUSH(x); + PUSH(w); + PUSH(x); + continue; + case 3: + x = POP(); + Py_INCREF(x); + w = POP(); + Py_INCREF(w); + v = TOP(); + Py_INCREF(v); + PUSH(w); + PUSH(x); + PUSH(v); + PUSH(w); + PUSH(x); + continue; + case 4: + x = POP(); + Py_INCREF(x); + w = POP(); + Py_INCREF(w); + v = POP(); + Py_INCREF(v); + u = TOP(); + Py_INCREF(u); + PUSH(v); + PUSH(w); + PUSH(x); + PUSH(u); + PUSH(v); + PUSH(w); + PUSH(x); + continue; + case 5: x = POP(); - if (oparg == 1) break; + Py_INCREF(x); w = POP(); - if (oparg == 2) break; + Py_INCREF(w); v = POP(); - if (oparg == 3) break; + Py_INCREF(v); u = POP(); - if (oparg == 4) break; - t = POP(); - break; + Py_INCREF(u); + t = TOP(); + Py_INCREF(t); + PUSH(u); + PUSH(v); + PUSH(w); + PUSH(x); + PUSH(t); + PUSH(u); + PUSH(v); + PUSH(w); + PUSH(x); + continue; default: fprintf(stderr, "Invalid argument to DUP_TOPX: %d!\n", oparg); PyErr_SetString(PyExc_SystemError, "invalid argument to DUP_TOPX"); x = NULL; - } - if (x == NULL) break; - switch (oparg) { - case 5: PUSH(t); - Py_INCREF(t); /* Fallthrough */ - case 4: PUSH(u); - Py_INCREF(u); /* Fallthrough */ - case 3: PUSH(v); - Py_INCREF(v); /* Fallthrough */ - case 2: PUSH(w); - Py_INCREF(w); /* Fallthrough */ - case 1: PUSH(x); - Py_INCREF(x); /* Fallthrough */ - } - switch (oparg) { - case 5: PUSH(t); /* Fallthrough */ - case 4: PUSH(u); /* Fallthrough */ - case 3: PUSH(v); /* Fallthrough */ - case 2: PUSH(w); /* Fallthrough */ - case 1: PUSH(x); /* Fallthrough */ } - continue; + break; case UNARY_POSITIVE: v = POP(); |