summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2002-06-13 17:59:51 (GMT)
committerGuido van Rossum <guido@python.org>2002-06-13 17:59:51 (GMT)
commitfea59e7f766b950ccd55f9eee87d4032a768fdcc (patch)
treeb668da1c6ff6ce390fa4ee95016a7af7c184208c
parentefb9097add12d372f3a41c6fa884235ba2291248 (diff)
downloadcpython-fea59e7f766b950ccd55f9eee87d4032a768fdcc.zip
cpython-fea59e7f766b950ccd55f9eee87d4032a768fdcc.tar.gz
cpython-fea59e7f766b950ccd55f9eee87d4032a768fdcc.tar.bz2
The opcode FOR_LOOP no longer exists.
-rw-r--r--Doc/lib/libdis.tex10
-rw-r--r--Include/opcode.h1
-rw-r--r--Lib/dis.py1
-rw-r--r--Python/ceval.c31
4 files changed, 3 insertions, 40 deletions
diff --git a/Doc/lib/libdis.tex b/Doc/lib/libdis.tex
index 38b3464..90f83a3 100644
--- a/Doc/lib/libdis.tex
+++ b/Doc/lib/libdis.tex
@@ -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.
diff --git a/Include/opcode.h b/Include/opcode.h
index df086ef..2e20246 100644
--- a/Include/opcode.h
+++ b/Include/opcode.h
@@ -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 */
diff --git a/Lib/dis.py b/Lib/dis.py
index 1529222..2674094 100644
--- a/Lib/dis.py
+++ b/Lib/dis.py
@@ -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
diff --git a/Python/ceval.c b/Python/ceval.c
index b9c0d5d..12397b4 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -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: