SF patch #701907: More use of fast_next_opcode

My previous patches should have used fast_next_opcode
in a few places instead of continue.

Also, applied one PyInt_AS_LONG macro in a place where
the type had already been checked.
This commit is contained in:
Raymond Hettinger 2003-03-14 01:37:42 +00:00
parent 43ed43bfc1
commit 080cb3268f

View file

@ -883,7 +883,7 @@ eval_frame(PyFrameObject *f)
w = SECOND(); w = SECOND();
SET_TOP(w); SET_TOP(w);
SET_SECOND(v); SET_SECOND(v);
continue; goto fast_next_opcode;
case ROT_THREE: case ROT_THREE:
v = TOP(); v = TOP();
@ -892,7 +892,7 @@ eval_frame(PyFrameObject *f)
SET_TOP(w); SET_TOP(w);
SET_SECOND(x); SET_SECOND(x);
SET_THIRD(v); SET_THIRD(v);
continue; goto fast_next_opcode;
case ROT_FOUR: case ROT_FOUR:
u = TOP(); u = TOP();
@ -903,13 +903,13 @@ eval_frame(PyFrameObject *f)
SET_SECOND(w); SET_SECOND(w);
SET_THIRD(x); SET_THIRD(x);
SET_FOURTH(u); SET_FOURTH(u);
continue; goto fast_next_opcode;
case DUP_TOP: case DUP_TOP:
v = TOP(); v = TOP();
Py_INCREF(v); Py_INCREF(v);
PUSH(v); PUSH(v);
continue; goto fast_next_opcode;
case DUP_TOPX: case DUP_TOPX:
if (oparg == 2) { if (oparg == 2) {
@ -1594,7 +1594,7 @@ eval_frame(PyFrameObject *f)
case END_FINALLY: case END_FINALLY:
v = POP(); v = POP();
if (PyInt_Check(v)) { if (PyInt_Check(v)) {
why = (enum why_code) PyInt_AsLong(v); why = (enum why_code) PyInt_AS_LONG(v);
if (why == WHY_RETURN || if (why == WHY_RETURN ||
why == WHY_YIELD || why == WHY_YIELD ||
why == WHY_CONTINUE) why == WHY_CONTINUE)
@ -1972,15 +1972,15 @@ eval_frame(PyFrameObject *f)
case JUMP_FORWARD: case JUMP_FORWARD:
JUMPBY(oparg); JUMPBY(oparg);
continue; goto fast_next_opcode;
case JUMP_IF_FALSE: case JUMP_IF_FALSE:
w = TOP(); w = TOP();
if (w == Py_True) if (w == Py_True)
continue; goto fast_next_opcode;
if (w == Py_False) { if (w == Py_False) {
JUMPBY(oparg); JUMPBY(oparg);
continue; goto fast_next_opcode;
} }
err = PyObject_IsTrue(w); err = PyObject_IsTrue(w);
if (err > 0) if (err > 0)
@ -1994,10 +1994,10 @@ eval_frame(PyFrameObject *f)
case JUMP_IF_TRUE: case JUMP_IF_TRUE:
w = TOP(); w = TOP();
if (w == Py_False) if (w == Py_False)
continue; goto fast_next_opcode;
if (w == Py_True) { if (w == Py_True) {
JUMPBY(oparg); JUMPBY(oparg);
continue; goto fast_next_opcode;
} }
err = PyObject_IsTrue(w); err = PyObject_IsTrue(w);
if (err > 0) { if (err > 0) {
@ -2012,7 +2012,7 @@ eval_frame(PyFrameObject *f)
case JUMP_ABSOLUTE: case JUMP_ABSOLUTE:
JUMPTO(oparg); JUMPTO(oparg);
continue; goto fast_next_opcode;
case GET_ITER: case GET_ITER:
/* before: [obj]; after [getiter(obj)] */ /* before: [obj]; after [getiter(obj)] */