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}.
|
popped, and the byte code counter is incremented by \var{delta}.
|
||||||
\end{opcodedesc}
|
\end{opcodedesc}
|
||||||
|
|
||||||
\begin{opcodedesc}{FOR_LOOP}{delta}
|
%\begin{opcodedesc}{FOR_LOOP}{delta}
|
||||||
This opcode is obsolete.
|
%This opcode is obsolete.
|
||||||
%Iterate over a sequence. TOS is the current index, TOS1 the sequence.
|
%\end{opcodedesc}
|
||||||
%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}{LOAD_LOCAL}{namei}
|
%\begin{opcodedesc}{LOAD_LOCAL}{namei}
|
||||||
%This opcode is obsolete.
|
%This opcode is obsolete.
|
||||||
|
|
|
@ -107,7 +107,6 @@ extern "C" {
|
||||||
#define JUMP_IF_FALSE 111 /* "" */
|
#define JUMP_IF_FALSE 111 /* "" */
|
||||||
#define JUMP_IF_TRUE 112 /* "" */
|
#define JUMP_IF_TRUE 112 /* "" */
|
||||||
#define JUMP_ABSOLUTE 113 /* Target byte offset from beginning of code */
|
#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 */
|
#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_FALSE', 111) # ""
|
||||||
jrel_op('JUMP_IF_TRUE', 112) # ""
|
jrel_op('JUMP_IF_TRUE', 112) # ""
|
||||||
jabs_op('JUMP_ABSOLUTE', 113) # Target byte offset from beginning of code
|
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
|
name_op('LOAD_GLOBAL', 116) # Index in name list
|
||||||
|
|
||||||
|
|
|
@ -1942,37 +1942,6 @@ eval_frame(PyFrameObject *f)
|
||||||
}
|
}
|
||||||
break;
|
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_LOOP:
|
||||||
case SETUP_EXCEPT:
|
case SETUP_EXCEPT:
|
||||||
case SETUP_FINALLY:
|
case SETUP_FINALLY:
|
||||||
|
|
Loading…
Reference in New Issue