https://github.com/python/cpython/commit/3ea9b92086240b2f38a74c6945e7a723b480cefe
commit: 3ea9b92086240b2f38a74c6945e7a723b480cefe
branch: main
author: Victor Stinner <[email protected]>
committer: vstinner <[email protected]>
date: 2024-06-03T08:45:20+02:00
summary:
gh-119396: Optimize unicode_decode_utf8_writer() (#119957)
Optimize unicode_decode_utf8_writer()
Take the ascii_decode() fast-path even if dest is not aligned on
size_t bytes.
files:
M Objects/unicodeobject.c
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index 12782754753ef5..53160f1799f2cc 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -4702,8 +4702,9 @@ ascii_decode(const char *start, const char *end, Py_UCS1
*dest)
const char *p = start;
#if SIZEOF_SIZE_T <= SIZEOF_VOID_P
- assert(_Py_IS_ALIGNED(dest, ALIGNOF_SIZE_T));
- if (_Py_IS_ALIGNED(p, ALIGNOF_SIZE_T)) {
+ if (_Py_IS_ALIGNED(p, ALIGNOF_SIZE_T)
+ && _Py_IS_ALIGNED(dest, ALIGNOF_SIZE_T))
+ {
/* Fast path, see in STRINGLIB(utf8_decode) for
an explanation. */
/* Help allocation */
@@ -4948,9 +4949,7 @@ unicode_decode_utf8_writer(_PyUnicodeWriter *writer,
const char *end = s + size;
Py_ssize_t decoded = 0;
Py_UCS1 *dest = (Py_UCS1*)writer->data + writer->pos * writer->kind;
- if (writer->kind == PyUnicode_1BYTE_KIND
- && _Py_IS_ALIGNED(dest, ALIGNOF_SIZE_T))
- {
+ if (writer->kind == PyUnicode_1BYTE_KIND) {
decoded = ascii_decode(s, end, dest);
writer->pos += decoded;
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]