summaryrefslogtreecommitdiffstats
path: root/Include
diff options
context:
space:
mode:
authorAntoine Pitrou <solipsis@pitrou.net>2012-06-15 20:15:23 (GMT)
committerAntoine Pitrou <solipsis@pitrou.net>2012-06-15 20:15:23 (GMT)
commit27f6a3b0bff9f100331707a4a461446ffc18baae (patch)
treea90dd1ba1c9d07e8d612202e236ace147c433cd6 /Include
parent3049f1243ec85590f64962994f055da66c85a15e (diff)
downloadcpython-27f6a3b0bff9f100331707a4a461446ffc18baae.zip
cpython-27f6a3b0bff9f100331707a4a461446ffc18baae.tar.gz
cpython-27f6a3b0bff9f100331707a4a461446ffc18baae.tar.bz2
Issue #15026: utf-16 encoding is now significantly faster (up to 10x).
Patch by Serhiy Storchaka.
Diffstat (limited to 'Include')
-rw-r--r--Include/unicodeobject.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/Include/unicodeobject.h b/Include/unicodeobject.h
index e40cc98..135e469 100644
--- a/Include/unicodeobject.h
+++ b/Include/unicodeobject.h
@@ -188,9 +188,9 @@ typedef unsigned char Py_UCS1;
(((((Py_UCS4)(high) & 0x03FF) << 10) | \
((Py_UCS4)(low) & 0x03FF)) + 0x10000)
/* high surrogate = top 10 bits added to D800 */
-#define Py_UNICODE_HIGH_SURROGATE(ch) (0xD800 | (((ch) - 0x10000) >> 10))
+#define Py_UNICODE_HIGH_SURROGATE(ch) (0xD800 - (0x10000 >> 10) + ((ch) >> 10))
/* low surrogate = bottom 10 bits added to DC00 */
-#define Py_UNICODE_LOW_SURROGATE(ch) (0xDC00 | (((ch) - 0x10000) & 0x3FF))
+#define Py_UNICODE_LOW_SURROGATE(ch) (0xDC00 + ((ch) & 0x3FF))
/* Check if substring matches at given offset. The offset must be
valid, and the substring must not be empty. */