summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrett Cannon <bcannon@gmail.com>2006-08-25 05:05:30 (GMT)
committerBrett Cannon <bcannon@gmail.com>2006-08-25 05:05:30 (GMT)
commite2e23ef97da1ce44c604d86d1f21c2701d7e581f (patch)
treebca7dc409238d532748ec23f9ffb89c7d4f99e01
parent5f5cfd121db044b5adf5d9da29fed0d31fec1814 (diff)
downloadcpython-e2e23ef97da1ce44c604d86d1f21c2701d7e581f.zip
cpython-e2e23ef97da1ce44c604d86d1f21c2701d7e581f.tar.gz
cpython-e2e23ef97da1ce44c604d86d1f21c2701d7e581f.tar.bz2
Remove the UNARY_CONVERT opcode (was used for backticks). Also bumped up the
import MAGIC number.
-rw-r--r--Doc/lib/libdis.tex4
-rw-r--r--Include/Python-ast.h10
-rw-r--r--Include/opcode.h1
-rw-r--r--Lib/compiler/pycodegen.py3
-rw-r--r--Lib/opcode.py1
-rw-r--r--Parser/Python.asdl1
-rw-r--r--Python/Python-ast.c37
-rw-r--r--Python/ast.c3
-rw-r--r--Python/ceval.c8
-rw-r--r--Python/import.c3
-rw-r--r--Python/peephole.c4
-rw-r--r--Python/symtable.c3
12 files changed, 4 insertions, 74 deletions
diff --git a/Doc/lib/libdis.tex b/Doc/lib/libdis.tex
index 27b8a5c..fc72322 100644
--- a/Doc/lib/libdis.tex
+++ b/Doc/lib/libdis.tex
@@ -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}
diff --git a/Include/Python-ast.h b/Include/Python-ast.h
index 3e21030..8fd8ceb 100644
--- a/Include/Python-ast.h
+++ b/Include/Python-ast.h
@@ -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 {
@@ -253,10 +252,6 @@ struct _expr {
} 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
diff --git a/Include/opcode.h b/Include/opcode.h
index e8a7c7f..1b9cb5c 100644
--- a/Include/opcode.h
+++ b/Include/opcode.h
@@ -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
diff --git a/Lib/compiler/pycodegen.py b/Lib/compiler/pycodegen.py
index db2251e..cc197e3 100644
--- a/Lib/compiler/pycodegen.py
+++ b/Lib/compiler/pycodegen.py
@@ -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):
diff --git a/Lib/opcode.py b/Lib/opcode.py
index 573a7b0..c2d7a59 100644
--- a/Lib/opcode.py
+++ b/Lib/opcode.py
@@ -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)
diff --git a/Parser/Python.asdl b/Parser/Python.asdl
index 00de381..5124e47 100644
--- a/Parser/Python.asdl
+++ b/Parser/Python.asdl
@@ -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?
diff --git a/Python/Python-ast.c b/Python/Python-ast.c
index 8e16cfb..11f42b8 100644
--- a/Python/Python-ast.c
+++ b/Python/Python-ast.c
@@ -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);
@@ -1553,27 +1547,6 @@ Call(expr_ty func, asdl_seq * args, asdl_seq * keywords, expr_ty starargs,
}
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)
{
expr_ty p;
@@ -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) <
diff --git a/Python/ast.c b/Python/ast.c
index b566ba3..1a43878 100644
--- a/Python/ast.c
+++ b/Python/ast.c
@@ -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;
diff --git a/Python/ceval.c b/Python/ceval.c
index b33c16b..95def9a 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -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);
diff --git a/Python/import.c b/Python/import.c
index a05078e..d80611e 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -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
diff --git a/Python/peephole.c b/Python/peephole.c
index 836d398..1459960 100644
--- a/Python/peephole.c
+++ b/Python/peephole.c
@@ -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) &&
diff --git a/Python/symtable.c b/Python/symtable.c
index 05d504c..bf15960 100644
--- a/Python/symtable.c
+++ b/Python/symtable.c
@@ -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. */