Mercurial > cpython-lru_cache-weakref
diff Python/sysmodule.c @ 86974:954167ce92a3
Issue #19512: add some common identifiers to only create common strings once,
instead of creating temporary Unicode string objects
Add also more identifiers in pythonrun.c to avoid temporary Unicode string
objets for the interactive interpreter.
| author | Victor Stinner <victor.stinner@gmail.com> |
|---|---|
| date | Wed, 06 Nov 2013 22:41:44 +0100 |
| parents | 5e402c16a74c |
| children | 01c4a0af73cf |
line wrap: on
line diff
--- a/Python/sysmodule.c Wed Nov 06 22:40:41 2013 +0100 +++ b/Python/sysmodule.c Wed Nov 06 22:41:44 2013 +0100 @@ -183,7 +183,7 @@ } if (_PyObject_SetAttrId(builtins, &PyId__, Py_None) != 0) return NULL; - outf = PySys_GetObject("stdout"); + outf = _PySys_GetObjectId(&_PyId_stdout); if (outf == NULL || outf == Py_None) { PyErr_SetString(PyExc_RuntimeError, "lost sys.stdout"); return NULL; @@ -1825,7 +1825,7 @@ PyObject *v; if ((v = makepathobject(path, DELIM)) == NULL) Py_FatalError("can't create sys.path"); - if (PySys_SetObject("path", v) != 0) + if (_PySys_SetObjectId(&_PyId_path, v) != 0) Py_FatalError("can't assign sys.path"); Py_DECREF(v); } @@ -1894,7 +1894,7 @@ wchar_t fullpath[MAX_PATH]; #endif - path = PySys_GetObject("path"); + path = _PySys_GetObjectId(&_PyId_path); if (path == NULL) return; @@ -2081,7 +2081,7 @@ */ static void -sys_write(char *name, FILE *fp, const char *format, va_list va) +sys_write(_Py_Identifier *key, FILE *fp, const char *format, va_list va) { PyObject *file; PyObject *error_type, *error_value, *error_traceback; @@ -2089,7 +2089,7 @@ int written; PyErr_Fetch(&error_type, &error_value, &error_traceback); - file = PySys_GetObject(name); + file = _PySys_GetObjectId(key); written = PyOS_vsnprintf(buffer, sizeof(buffer), format, va); if (sys_pyfile_write(buffer, file) != 0) { PyErr_Clear(); @@ -2109,7 +2109,7 @@ va_list va; va_start(va, format); - sys_write("stdout", stdout, format, va); + sys_write(&_PyId_stdout, stdout, format, va); va_end(va); } @@ -2119,19 +2119,19 @@ va_list va; va_start(va, format); - sys_write("stderr", stderr, format, va); + sys_write(&_PyId_stderr, stderr, format, va); va_end(va); } static void -sys_format(char *name, FILE *fp, const char *format, va_list va) +sys_format(_Py_Identifier *key, FILE *fp, const char *format, va_list va) { PyObject *file, *message; PyObject *error_type, *error_value, *error_traceback; char *utf8; PyErr_Fetch(&error_type, &error_value, &error_traceback); - file = PySys_GetObject(name); + file = _PySys_GetObjectId(key); message = PyUnicode_FromFormatV(format, va); if (message != NULL) { if (sys_pyfile_write_unicode(message, file) != 0) { @@ -2151,7 +2151,7 @@ va_list va; va_start(va, format); - sys_format("stdout", stdout, format, va); + sys_format(&_PyId_stdout, stdout, format, va); va_end(va); } @@ -2161,6 +2161,6 @@ va_list va; va_start(va, format); - sys_format("stderr", stderr, format, va); + sys_format(&_PyId_stderr, stderr, format, va); va_end(va); }
