Mercurial > cpython-lru_cache-weakref
diff Python/ceval.c @ 15151:ca9f6a8e9885 legacy-trunk
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.
| author | Tim Peters <tim.peters@gmail.com> |
|---|---|
| date | Wed, 11 Oct 2000 07:04:49 +0000 |
| parents | 25ddd3dc7a7a |
| children | ed49a67869e9 |
line wrap: on
line diff
--- a/Python/ceval.c Tue Oct 10 22:07:18 2000 +0000 +++ b/Python/ceval.c Wed Oct 11 07:04:49 2000 +0000 @@ -708,49 +708,79 @@ case DUP_TOPX: switch (oparg) { - case 5: - case 4: - case 3: + case 1: + x = TOP(); + Py_INCREF(x); + PUSH(x); + continue; case 2: - case 1: + x = POP(); + Py_INCREF(x); + w = TOP(); + Py_INCREF(w); + PUSH(x); + PUSH(w); + PUSH(x); + continue; + case 3: x = POP(); - if (oparg == 1) break; + 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(); - if (oparg == 2) break; + Py_INCREF(w); v = POP(); - if (oparg == 3) break; + 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(); + Py_INCREF(x); + w = POP(); + Py_INCREF(w); + v = POP(); + 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; + break; } - 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();
