The opcode FOR_LOOP no longer exists.
This commit is contained in:
parent
efb9097add
commit
fea59e7f76
|
@ -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.
|
||||
|
|
|
@ -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 */
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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:
|
||||
|
|
Loading…
Reference in New Issue