From fea59e7f766b950ccd55f9eee87d4032a768fdcc Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Thu, 13 Jun 2002 17:59:51 +0000 Subject: [PATCH] The opcode FOR_LOOP no longer exists. --- Doc/lib/libdis.tex | 10 +++------- Include/opcode.h | 1 - Lib/dis.py | 1 - Python/ceval.c | 31 ------------------------------- 4 files changed, 3 insertions(+), 40 deletions(-) diff --git a/Doc/lib/libdis.tex b/Doc/lib/libdis.tex index 38b34646a10..90f83a3624f 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 df086efc88c..2e2024618f7 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 15292228f7e..26740944344 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 b9c0d5d3b32..12397b49efd 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: