summaryrefslogtreecommitdiff
path: root/Parser
diff options
context:
space:
mode:
Diffstat (limited to 'Parser')
-rw-r--r--Parser/asdl_c.py21
-rw-r--r--Parser/tokenizer.c6
2 files changed, 16 insertions, 11 deletions
diff --git a/Parser/asdl_c.py b/Parser/asdl_c.py
index 725d73bad4..444cdea341 100644
--- a/Parser/asdl_c.py
+++ b/Parser/asdl_c.py
@@ -622,6 +622,9 @@ class PyTypesVisitor(PickleVisitor):
def visitModule(self, mod):
self.emit("""
+_Py_IDENTIFIER(_fields);
+_Py_IDENTIFIER(_attributes);
+
typedef struct {
PyObject_HEAD
PyObject *dict;
@@ -650,7 +653,6 @@ ast_clear(AST_object *self)
static int
ast_type_init(PyObject *self, PyObject *args, PyObject *kw)
{
- _Py_IDENTIFIER(_fields);
Py_ssize_t i, numfields = 0;
int res = -1;
PyObject *key, *value, *fields;
@@ -775,6 +777,8 @@ static PyTypeObject AST_type = {
static PyTypeObject* make_type(char *type, PyTypeObject* base, char**fields, int num_fields)
{
+ _Py_IDENTIFIER(__module__);
+ _Py_IDENTIFIER(_ast);
PyObject *fnames, *result;
int i;
fnames = PyTuple_New(num_fields);
@@ -787,8 +791,11 @@ static PyTypeObject* make_type(char *type, PyTypeObject* base, char**fields, int
}
PyTuple_SET_ITEM(fnames, i, field);
}
- result = PyObject_CallFunction((PyObject*)&PyType_Type, "s(O){sOss}",
- type, base, "_fields", fnames, "__module__", "_ast");
+ result = PyObject_CallFunction((PyObject*)&PyType_Type, "s(O){OOOO}",
+ type, base,
+ _PyUnicode_FromId(&PyId__fields), fnames,
+ _PyUnicode_FromId(&PyId___module__),
+ _PyUnicode_FromId(&PyId__ast));
Py_DECREF(fnames);
return (PyTypeObject*)result;
}
@@ -796,7 +803,6 @@ static PyTypeObject* make_type(char *type, PyTypeObject* base, char**fields, int
static int add_attributes(PyTypeObject* type, char**attrs, int num_fields)
{
int i, result;
- _Py_IDENTIFIER(_attributes);
PyObject *s, *l = PyTuple_New(num_fields);
if (!l)
return 0;
@@ -942,8 +948,8 @@ static int add_ast_fields(void)
d = AST_type.tp_dict;
empty_tuple = PyTuple_New(0);
if (!empty_tuple ||
- PyDict_SetItemString(d, "_fields", empty_tuple) < 0 ||
- PyDict_SetItemString(d, "_attributes", empty_tuple) < 0) {
+ _PyDict_SetItemId(d, &PyId__fields, empty_tuple) < 0 ||
+ _PyDict_SetItemId(d, &PyId__attributes, empty_tuple) < 0) {
Py_XDECREF(empty_tuple);
return -1;
}
@@ -1091,8 +1097,7 @@ class ObjVisitor(PickleVisitor):
self.emit("%s o = (%s)_o;" % (ctype, ctype), 1)
self.emit("PyObject *result = NULL, *value = NULL;", 1)
self.emit('if (!o) {', 1)
- self.emit("Py_INCREF(Py_None);", 2)
- self.emit('return Py_None;', 2)
+ self.emit("Py_RETURN_NONE;", 2)
self.emit("}", 1)
self.emit('', 0)
diff --git a/Parser/tokenizer.c b/Parser/tokenizer.c
index ff65f2a735..5cc9533c3c 100644
--- a/Parser/tokenizer.c
+++ b/Parser/tokenizer.c
@@ -440,7 +440,7 @@ fp_readl(char *s, int size, struct tok_state *tok)
}
else
{
- bufobj = PyObject_CallObject(tok->decoding_readline, NULL);
+ bufobj = _PyObject_CallNoArg(tok->decoding_readline);
if (bufobj == NULL)
goto error;
}
@@ -533,7 +533,7 @@ fp_setreadl(struct tok_state *tok, const char* enc)
Py_XSETREF(tok->decoding_readline, readline);
if (pos > 0) {
- PyObject *bufobj = PyObject_CallObject(readline, NULL);
+ PyObject *bufobj = _PyObject_CallNoArg(readline);
if (bufobj == NULL)
return 0;
Py_DECREF(bufobj);
@@ -650,7 +650,7 @@ decoding_feof(struct tok_state *tok)
} else {
PyObject* buf = tok->decoding_buffer;
if (buf == NULL) {
- buf = PyObject_CallObject(tok->decoding_readline, NULL);
+ buf = _PyObject_CallNoArg(tok->decoding_readline);
if (buf == NULL) {
error_ret(tok);
return 1;