The opcode FOR_LOOP no longer exists.

This commit is contained in:
Guido van Rossum 2002-06-13 17:59:51 +00:00
parent efb9097add
commit fea59e7f76
4 changed files with 3 additions and 40 deletions

View File

@ -556,13 +556,9 @@ it). If the iterator indicates it is exhausted \code{TOS} is
popped, and the byte code counter is incremented by \var{delta}.
\end{opcodedesc}
\begin{opcodedesc}{FOR_LOOP}{delta}
This opcode is obsolete.
%Iterate over a sequence. TOS is the current index, TOS1 the sequence.
%First, the next element is computed. If the sequence is exhausted,
%increment byte code counter by \var{delta}. Otherwise, push the
%sequence, the incremented counter, and the current item onto the stack.
\end{opcodedesc}
%\begin{opcodedesc}{FOR_LOOP}{delta}
%This opcode is obsolete.
%\end{opcodedesc}
%\begin{opcodedesc}{LOAD_LOCAL}{namei}
%This opcode is obsolete.

View File

@ -107,7 +107,6 @@ extern "C" {
#define JUMP_IF_FALSE 111 /* "" */
#define JUMP_IF_TRUE 112 /* "" */
#define JUMP_ABSOLUTE 113 /* Target byte offset from beginning of code */
#define FOR_LOOP 114 /* Number of bytes to skip */
#define LOAD_GLOBAL 116 /* Index in name list */

View File

@ -262,7 +262,6 @@ jrel_op('JUMP_FORWARD', 110) # Number of bytes to skip
jrel_op('JUMP_IF_FALSE', 111) # ""
jrel_op('JUMP_IF_TRUE', 112) # ""
jabs_op('JUMP_ABSOLUTE', 113) # Target byte offset from beginning of code
jrel_op('FOR_LOOP', 114) # Number of bytes to skip
name_op('LOAD_GLOBAL', 116) # Index in name list

View File

@ -1942,37 +1942,6 @@ eval_frame(PyFrameObject *f)
}
break;
case FOR_LOOP:
/* for v in s: ...
On entry: stack contains s, i.
On exit: stack contains s, i+1, s[i];
but if loop exhausted:
s, i are popped, and we jump */
w = POP(); /* Loop index */
v = POP(); /* Sequence object */
u = loop_subscript(v, w);
if (u != NULL) {
PUSH(v);
x = PyInt_FromLong(PyInt_AsLong(w)+1);
PUSH(x);
Py_DECREF(w);
PUSH(u);
if (x != NULL) continue;
}
else {
Py_DECREF(v);
Py_DECREF(w);
/* A NULL can mean "s exhausted"
but also an error: */
if (PyErr_Occurred())
why = WHY_EXCEPTION;
else {
JUMPBY(oparg);
continue;
}
}
break;
case SETUP_LOOP:
case SETUP_EXCEPT:
case SETUP_FINALLY: