]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Remove the UNARY_CONVERT opcode (was used for backticks). Also bumped up the
authorBrett Cannon <bcannon@gmail.com>
Fri, 25 Aug 2006 05:05:30 +0000 (05:05 +0000)
committerBrett Cannon <bcannon@gmail.com>
Fri, 25 Aug 2006 05:05:30 +0000 (05:05 +0000)
import MAGIC number.

12 files changed:
Doc/lib/libdis.tex
Include/Python-ast.h
Include/opcode.h
Lib/compiler/pycodegen.py
Lib/opcode.py
Parser/Python.asdl
Python/Python-ast.c
Python/ast.c
Python/ceval.c
Python/import.c
Python/peephole.c
Python/symtable.c

index 27b8a5c5f397775ff131905a030cb41345cd167f..fc723220586c1a4c69b2b21d13511f1ccd1c0de5 100644 (file)
@@ -165,10 +165,6 @@ Implements \code{TOS = -TOS}.
 Implements \code{TOS = not TOS}.
 \end{opcodedesc}
 
-\begin{opcodedesc}{UNARY_CONVERT}{}
-Implements \code{TOS = `TOS`}.
-\end{opcodedesc}
-
 \begin{opcodedesc}{UNARY_INVERT}{}
 Implements \code{TOS = \~{}TOS}.
 \end{opcodedesc}
index 3e2103097b515e96855d542f3aac0905d67bfa39..8fd8ceb26196d3cd1b1478ace364882841d79b5e 100644 (file)
@@ -186,9 +186,8 @@ struct _stmt {
 enum _expr_kind {BoolOp_kind=1, BinOp_kind=2, UnaryOp_kind=3, Lambda_kind=4,
                   IfExp_kind=5, Dict_kind=6, ListComp_kind=7,
                   GeneratorExp_kind=8, Yield_kind=9, Compare_kind=10,
-                  Call_kind=11, Repr_kind=12, Num_kind=13, Str_kind=14,
-                  Attribute_kind=15, Subscript_kind=16, Name_kind=17,
-                  List_kind=18, Tuple_kind=19};
+                  Call_kind=11, Num_kind=12, Str_kind=13, Attribute_kind=14,
+                  Subscript_kind=15, Name_kind=16, List_kind=17, Tuple_kind=18};
 struct _expr {
         enum _expr_kind kind;
         union {
@@ -252,10 +251,6 @@ struct _expr {
                         expr_ty kwargs;
                 } Call;
                 
-                struct {
-                        expr_ty value;
-                } Repr;
-                
                 struct {
                         object n;
                 } Num;
@@ -414,7 +409,6 @@ expr_ty Compare(expr_ty left, asdl_int_seq * ops, asdl_seq * comparators, int
 expr_ty Call(expr_ty func, asdl_seq * args, asdl_seq * keywords, expr_ty
              starargs, expr_ty kwargs, int lineno, int col_offset, PyArena
              *arena);
-expr_ty Repr(expr_ty value, int lineno, int col_offset, PyArena *arena);
 expr_ty Num(object n, int lineno, int col_offset, PyArena *arena);
 expr_ty Str(string s, int lineno, int col_offset, PyArena *arena);
 expr_ty Attribute(expr_ty value, identifier attr, expr_context_ty ctx, int
index e8a7c7f1fa7a672811ef02013668899b1b1f1433..1b9cb5cc573f4eff071ba31dbbb9f21c9010cf44 100644 (file)
@@ -18,7 +18,6 @@ extern "C" {
 #define UNARY_POSITIVE 10
 #define UNARY_NEGATIVE 11
 #define UNARY_NOT      12
-#define UNARY_CONVERT  13
 
 #define UNARY_INVERT   15
 
index db2251e6f879afe37572b773f0e3d99692820846..cc197e307bab76387d99f43a1cb5f9a44510cd4a 100644 (file)
@@ -1207,9 +1207,6 @@ class CodeGenerator:
     def visitNot(self, node):
         return self.unaryOp(node, 'UNARY_NOT')
 
-    def visitBackquote(self, node):
-        return self.unaryOp(node, 'UNARY_CONVERT')
-
     # bit ops
 
     def bitOp(self, nodes, op):
index 573a7b04be6520df0c6ee35c2358c500f49a522f..c2d7a59dc5d2c8f47da7bced4f868bb58f61a0e8 100644 (file)
@@ -54,7 +54,6 @@ def_op('NOP', 9)
 def_op('UNARY_POSITIVE', 10)
 def_op('UNARY_NEGATIVE', 11)
 def_op('UNARY_NOT', 12)
-def_op('UNARY_CONVERT', 13)
 
 def_op('UNARY_INVERT', 15)
 
index 00de381c8dca21ca8a5ace9ec5b308906bc5642b..5124e47616d60d54736b08452235b378625b9739 100644 (file)
@@ -65,7 +65,6 @@ module Python version "$Revision$"
             | Compare(expr left, cmpop* ops, expr* comparators)
             | Call(expr func, expr* args, keyword* keywords,
                         expr? starargs, expr? kwargs)
-            | Repr(expr value)
             | Num(object n) -- a number as a PyObject.
             | Str(string s) -- need to specify raw, unicode, etc?
             -- other literals? bools?
index 8e16cfb4206578b6d8d58d0e1c3ca368c4e7da7d..11f42b894c86911114443f5ae57d59051d1fcfc8 100644 (file)
@@ -206,10 +206,6 @@ static char *Call_fields[]={
         "starargs",
         "kwargs",
 };
-static PyTypeObject *Repr_type;
-static char *Repr_fields[]={
-        "value",
-};
 static PyTypeObject *Num_type;
 static char *Num_fields[]={
         "n",
@@ -532,8 +528,6 @@ static int init_types(void)
         if (!Compare_type) return 0;
         Call_type = make_type("Call", expr_type, Call_fields, 5);
         if (!Call_type) return 0;
-        Repr_type = make_type("Repr", expr_type, Repr_fields, 1);
-        if (!Repr_type) return 0;
         Num_type = make_type("Num", expr_type, Num_fields, 1);
         if (!Num_type) return 0;
         Str_type = make_type("Str", expr_type, Str_fields, 1);
@@ -1552,27 +1546,6 @@ Call(expr_ty func, asdl_seq * args, asdl_seq * keywords, expr_ty starargs,
         return p;
 }
 
-expr_ty
-Repr(expr_ty value, int lineno, int col_offset, PyArena *arena)
-{
-        expr_ty p;
-        if (!value) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field value is required for Repr");
-                return NULL;
-        }
-        p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p) {
-                PyErr_NoMemory();
-                return NULL;
-        }
-        p->kind = Repr_kind;
-        p->v.Repr.value = value;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
 expr_ty
 Num(object n, int lineno, int col_offset, PyArena *arena)
 {
@@ -2544,15 +2517,6 @@ ast2obj_expr(void* _o)
                         goto failed;
                 Py_DECREF(value);
                 break;
-        case Repr_kind:
-                result = PyType_GenericNew(Repr_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_expr(o->v.Repr.value);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "value", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
         case Num_kind:
                 result = PyType_GenericNew(Num_type, NULL, NULL);
                 if (!result) goto failed;
@@ -3113,7 +3077,6 @@ init_ast(void)
         if (PyDict_SetItemString(d, "Compare", (PyObject*)Compare_type) < 0)
             return;
         if (PyDict_SetItemString(d, "Call", (PyObject*)Call_type) < 0) return;
-        if (PyDict_SetItemString(d, "Repr", (PyObject*)Repr_type) < 0) return;
         if (PyDict_SetItemString(d, "Num", (PyObject*)Num_type) < 0) return;
         if (PyDict_SetItemString(d, "Str", (PyObject*)Str_type) < 0) return;
         if (PyDict_SetItemString(d, "Attribute", (PyObject*)Attribute_type) <
index b566ba3e390844f69c19341bb9f8356c49985038..1a438789434ad8ba96c315af933ec7a2ab215814 100644 (file)
@@ -401,9 +401,6 @@ set_context(expr_ty e, expr_context_ty ctx, const node *n)
         case Compare_kind:
             expr_name = "comparison";
             break;
-        case Repr_kind:
-            expr_name = "repr";
-            break;
         case IfExp_kind:
             expr_name = "conditional expression";
             break;
index b33c16bd9012d63caa9152c2fcfe49ddab0fb212..95def9a95439f19ecffe0c0d0c886ebc7a2599c7 100644 (file)
@@ -1040,14 +1040,6 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
                        STACKADJ(-1);
                        break;
 
-               case UNARY_CONVERT:
-                       v = TOP();
-                       x = PyObject_Repr(v);
-                       Py_DECREF(v);
-                       SET_TOP(x);
-                       if (x != NULL) continue;
-                       break;
-
                case UNARY_INVERT:
                        v = TOP();
                        x = PyNumber_Invert(v);
index a05078e2b72ff2694b3792558778c38bff9e18dc..d80611effb9e366c67b190d1967c692105092d16 100644 (file)
@@ -65,9 +65,10 @@ extern time_t PyOS_GetLastModificationTime(char *, FILE *);
        Python 2.5c1: 62121 (fix wrong lnotab with for loops and
                                    storing constants that should have been removed)
        Python 3000:   3000
+                             3010 (removed UNARY_CONVERT)
 .
 */
-#define MAGIC (3000 | ((long)'\r'<<16) | ((long)'\n'<<24))
+#define MAGIC (3010 | ((long)'\r'<<16) | ((long)'\n'<<24))
 
 /* Magic word as global; note that _PyImport_Init() can change the
    value of this global to accommodate for alterations of how the
index 836d3983c995ebfca76f83d4eea6228d057b05f7..145996095812c28e591547e8fce8ecafa0130d13 100644 (file)
@@ -189,9 +189,6 @@ fold_unaryops_on_constants(unsigned char *codestr, PyObject *consts)
                        if (PyObject_IsTrue(v) == 1)
                                newconst = PyNumber_Negative(v);
                        break;
-               case UNARY_CONVERT:
-                       newconst = PyObject_Repr(v);
-                       break;
                case UNARY_INVERT:
                        newconst = PyNumber_Invert(v);
                        break;
@@ -470,7 +467,6 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names,
                                /* Fold unary ops on constants.
                                   LOAD_CONST c1  UNARY_OP -->  LOAD_CONST unary_op(c) */
                        case UNARY_NEGATIVE:
-                       case UNARY_CONVERT:
                        case UNARY_INVERT:
                                if (lastlc >= 1  &&
                                    ISBASICBLOCK(blocks, i-3, 4)  &&
index 05d504c2cb64cabc9d1f24cb8c31e9f92dea9d3e..bf1596078534fa2b96baacac4b2649fa60fcb0c0 100644 (file)
@@ -1182,9 +1182,6 @@ symtable_visit_expr(struct symtable *st, expr_ty e)
                if (e->v.Call.kwargs)
                        VISIT(st, expr, e->v.Call.kwargs);
                break;
-        case Repr_kind:
-               VISIT(st, expr, e->v.Repr.value);
-               break;
         case Num_kind:
         case Str_kind:
                /* Nothing to do here. */