mirror of
https://github.com/python/cpython.git
synced 2025-09-05 00:11:10 +00:00
Don't use fast_next_opcode for JUMP_* opcodes. This fixes the problem
reported by Kurt B. Kaiser.
This commit is contained in:
parent
98c20befa6
commit
ca2a2f11d0
1 changed files with 6 additions and 6 deletions
|
@ -2001,18 +2001,18 @@ eval_frame(PyFrameObject *f)
|
||||||
|
|
||||||
case JUMP_FORWARD:
|
case JUMP_FORWARD:
|
||||||
JUMPBY(oparg);
|
JUMPBY(oparg);
|
||||||
goto fast_next_opcode;
|
continue;
|
||||||
|
|
||||||
PREDICTED_WITH_ARG(JUMP_IF_FALSE);
|
PREDICTED_WITH_ARG(JUMP_IF_FALSE);
|
||||||
case JUMP_IF_FALSE:
|
case JUMP_IF_FALSE:
|
||||||
w = TOP();
|
w = TOP();
|
||||||
if (w == Py_True) {
|
if (w == Py_True) {
|
||||||
PREDICT(POP_TOP);
|
PREDICT(POP_TOP);
|
||||||
goto fast_next_opcode;
|
continue;
|
||||||
}
|
}
|
||||||
if (w == Py_False) {
|
if (w == Py_False) {
|
||||||
JUMPBY(oparg);
|
JUMPBY(oparg);
|
||||||
goto fast_next_opcode;
|
continue;
|
||||||
}
|
}
|
||||||
err = PyObject_IsTrue(w);
|
err = PyObject_IsTrue(w);
|
||||||
if (err > 0)
|
if (err > 0)
|
||||||
|
@ -2028,11 +2028,11 @@ eval_frame(PyFrameObject *f)
|
||||||
w = TOP();
|
w = TOP();
|
||||||
if (w == Py_False) {
|
if (w == Py_False) {
|
||||||
PREDICT(POP_TOP);
|
PREDICT(POP_TOP);
|
||||||
goto fast_next_opcode;
|
continue;
|
||||||
}
|
}
|
||||||
if (w == Py_True) {
|
if (w == Py_True) {
|
||||||
JUMPBY(oparg);
|
JUMPBY(oparg);
|
||||||
goto fast_next_opcode;
|
continue;
|
||||||
}
|
}
|
||||||
err = PyObject_IsTrue(w);
|
err = PyObject_IsTrue(w);
|
||||||
if (err > 0) {
|
if (err > 0) {
|
||||||
|
@ -2047,7 +2047,7 @@ eval_frame(PyFrameObject *f)
|
||||||
|
|
||||||
case JUMP_ABSOLUTE:
|
case JUMP_ABSOLUTE:
|
||||||
JUMPTO(oparg);
|
JUMPTO(oparg);
|
||||||
goto fast_next_opcode;
|
continue;
|
||||||
|
|
||||||
case GET_ITER:
|
case GET_ITER:
|
||||||
/* before: [obj]; after [getiter(obj)] */
|
/* before: [obj]; after [getiter(obj)] */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue