[Python-checkins] cpython: Issue #19512: sys_displayhook() now uses an identifier for "builtins"
victor.stinner
python-checkins at python.org
Wed Nov 6 18:45:52 CET 2013
http://hg.python.org/cpython/rev/a2f42d57b91d
changeset: 86964:a2f42d57b91d
user: Victor Stinner <victor.stinner at gmail.com>
date: Wed Nov 06 18:27:13 2013 +0100
summary:
Issue #19512: sys_displayhook() now uses an identifier for "builtins"
dictionary key and only decodes "\n" string once to write a newline.
So "builtins" and "\n" are only decoded once from UTF-8, at the first call.
files:
Python/sysmodule.c | 12 ++++++++++--
1 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/Python/sysmodule.c b/Python/sysmodule.c
--- a/Python/sysmodule.c
+++ b/Python/sysmodule.c
@@ -137,10 +137,13 @@
PyObject *outf;
PyInterpreterState *interp = PyThreadState_GET()->interp;
PyObject *modules = interp->modules;
- PyObject *builtins = PyDict_GetItemString(modules, "builtins");
+ PyObject *builtins;
+ static PyObject *newline = NULL;
int err;
_Py_IDENTIFIER(_);
+ _Py_IDENTIFIER(builtins);
+ builtins = _PyDict_GetItemId(modules, &PyId_builtins);
if (builtins == NULL) {
PyErr_SetString(PyExc_RuntimeError, "lost builtins module");
return NULL;
@@ -173,7 +176,12 @@
return NULL;
}
}
- if (PyFile_WriteString("\n", outf) != 0)
+ if (newline == NULL) {
+ newline = PyUnicode_FromString("\n");
+ if (newline == NULL)
+ return NULL;
+ }
+ if (PyFile_WriteObject(newline, outf, Py_PRINT_RAW) != 0)
return NULL;
if (_PyObject_SetAttrId(builtins, &PyId__, o) != 0)
return NULL;
--
Repository URL: http://hg.python.org/cpython
More information about the Python-checkins
mailing list