]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.14] gh-133968: Add fast path to PyUnicodeWriter_WriteStr() (GH-133969) (#133971)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Tue, 13 May 2025 13:58:25 +0000 (15:58 +0200)
committerGitHub <noreply@github.com>
Tue, 13 May 2025 13:58:25 +0000 (13:58 +0000)
gh-133968: Add fast path to PyUnicodeWriter_WriteStr() (GH-133969)

Don't call PyObject_Str() if the input type is str.
(cherry picked from commit fe9f6e829a535747b1e06d9bfda033a9a47165ed)

Co-authored-by: Victor Stinner <vstinner@python.org>
Objects/unicodeobject.c

index 4e1aafb91fc8f1e4c56d8331829698a49c3ac105..9b8e3bb5462d4b11eee3fa3d240d475500696cd0 100644 (file)
@@ -13954,7 +13954,12 @@ _PyUnicodeWriter_WriteStr(_PyUnicodeWriter *writer, PyObject *str)
 int
 PyUnicodeWriter_WriteStr(PyUnicodeWriter *writer, PyObject *obj)
 {
-    if (Py_TYPE(obj) == &PyLong_Type) {
+    PyTypeObject *type = Py_TYPE(obj);
+    if (type == &PyUnicode_Type) {
+        return _PyUnicodeWriter_WriteStr((_PyUnicodeWriter*)writer, obj);
+    }
+
+    if (type == &PyLong_Type) {
         return _PyLong_FormatWriter((_PyUnicodeWriter*)writer, obj, 10, 0);
     }