From c6d210ca7673c6ce0cb4b77ada22087f58372efc Mon Sep 17 00:00:00 2001 From: Neal Norwitz Date: Thu, 16 Mar 2006 06:02:10 +0000 Subject: [PATCH] Get rid of last vestiges of BINARY_DIVIDE. --- Doc/lib/libdis.tex | 5 ----- Include/opcode.h | 2 +- Lib/compiler/pycodegen.py | 4 +--- Lib/opcode.py | 2 +- Python/ceval.c | 13 ------------- Python/compile.c | 6 ------ 6 files changed, 3 insertions(+), 29 deletions(-) diff --git a/Doc/lib/libdis.tex b/Doc/lib/libdis.tex index 67691b709b1..a5b2c2c54a2 100644 --- a/Doc/lib/libdis.tex +++ b/Doc/lib/libdis.tex @@ -189,11 +189,6 @@ Implements \code{TOS = TOS1 ** TOS}. Implements \code{TOS = TOS1 * TOS}. \end{opcodedesc} -\begin{opcodedesc}{BINARY_DIVIDE}{} -Implements \code{TOS = TOS1 / TOS} when -\code{from __future__ import division} is not in effect. -\end{opcodedesc} - \begin{opcodedesc}{BINARY_FLOOR_DIVIDE}{} Implements \code{TOS = TOS1 // TOS}. \end{opcodedesc} diff --git a/Include/opcode.h b/Include/opcode.h index d8cb2cd4809..d05588a8d34 100644 --- a/Include/opcode.h +++ b/Include/opcode.h @@ -26,7 +26,7 @@ extern "C" { #define BINARY_POWER 19 #define BINARY_MULTIPLY 20 -#define BINARY_DIVIDE 21 + #define BINARY_MODULO 22 #define BINARY_ADD 23 #define BINARY_SUBTRACT 24 diff --git a/Lib/compiler/pycodegen.py b/Lib/compiler/pycodegen.py index f25b3fbf5f8..e34120ef5d9 100644 --- a/Lib/compiler/pycodegen.py +++ b/Lib/compiler/pycodegen.py @@ -206,14 +206,12 @@ class CodeGenerator: self.setups = misc.Stack() self.last_lineno = None self._setupGraphDelegation() - self._div_op = "BINARY_DIVIDE" # XXX set flags based on future features futures = self.get_module().futures for feature in futures: if feature == "division": self.graph.setFlag(CO_FUTURE_DIVISION) - self._div_op = "BINARY_TRUE_DIVIDE" elif feature == "absolute_import": self.graph.setFlag(CO_FUTURE_ABSIMPORT) elif feature == "with_statement": @@ -1177,7 +1175,7 @@ class CodeGenerator: return self.binaryOp(node, 'BINARY_MULTIPLY') def visitDiv(self, node): - return self.binaryOp(node, self._div_op) + return self.binaryOp(node, 'BINARY_TRUE_DIVIDE') def visitFloorDiv(self, node): return self.binaryOp(node, 'BINARY_FLOOR_DIVIDE') diff --git a/Lib/opcode.py b/Lib/opcode.py index 095ca42ec01..2b9212f75b4 100644 --- a/Lib/opcode.py +++ b/Lib/opcode.py @@ -61,7 +61,7 @@ def_op('UNARY_INVERT', 15) def_op('LIST_APPEND', 18) def_op('BINARY_POWER', 19) def_op('BINARY_MULTIPLY', 20) -def_op('BINARY_DIVIDE', 21) + def_op('BINARY_MODULO', 22) def_op('BINARY_ADD', 23) def_op('BINARY_SUBTRACT', 24) diff --git a/Python/ceval.c b/Python/ceval.c index c854fcfe51c..1a3561016c3 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -1073,19 +1073,6 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throw) if (x != NULL) continue; break; - case BINARY_DIVIDE: - if (!_Py_QnewFlag) { - w = POP(); - v = TOP(); - x = PyNumber_Divide(v, w); - Py_DECREF(v); - Py_DECREF(w); - SET_TOP(x); - if (x != NULL) continue; - break; - } - /* -Qnew is in effect: fall through to - BINARY_TRUE_DIVIDE */ case BINARY_TRUE_DIVIDE: w = POP(); v = TOP(); diff --git a/Python/compile.c b/Python/compile.c index cfc6ef199e6..9ce2bf795fc 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -479,11 +479,6 @@ fold_binops_on_constants(unsigned char *codestr, PyObject *consts) case BINARY_MULTIPLY: newconst = PyNumber_Multiply(v, w); break; - case BINARY_DIVIDE: - /* Cannot fold this operation statically since - the result can depend on the run-time presence - of the -Qnew flag */ - return 0; case BINARY_TRUE_DIVIDE: newconst = PyNumber_TrueDivide(v, w); break; @@ -1302,7 +1297,6 @@ opcode_stack_effect(int opcode, int oparg) case BINARY_POWER: case BINARY_MULTIPLY: - case BINARY_DIVIDE: case BINARY_MODULO: case BINARY_ADD: case BINARY_SUBTRACT: