diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2012-10-04 19:53:50 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2012-10-04 19:53:50 (GMT) |
commit | 90db9c47dca4d105835386fc57d46472b0836820 (patch) | |
tree | 345440b7ef8e54420ff06e87514f0540256e7958 | |
parent | 6964f4b790470e1dcefb77d51166268e6676d068 (diff) | |
download | cpython-90db9c47dca4d105835386fc57d46472b0836820.zip cpython-90db9c47dca4d105835386fc57d46472b0836820.tar.gz cpython-90db9c47dca4d105835386fc57d46472b0836820.tar.bz2 |
Enable also ptr==ptr optimization in PyUnicode_Compare()
It was already implemented in PyUnicode_RichCompare()
-rw-r--r-- | Include/unicodeobject.h | 3 | ||||
-rw-r--r-- | Objects/unicodeobject.c | 9 |
2 files changed, 7 insertions, 5 deletions
diff --git a/Include/unicodeobject.h b/Include/unicodeobject.h index 135e469..956bdbd 100644 --- a/Include/unicodeobject.h +++ b/Include/unicodeobject.h @@ -1951,7 +1951,8 @@ PyAPI_FUNC(PyObject *) PyUnicode_Replace( ); /* Compare two strings and return -1, 0, 1 for less than, equal, - greater than resp. */ + greater than resp. + Raise an exception and return -1 on error. */ PyAPI_FUNC(int) PyUnicode_Compare( PyObject *left, /* Left string */ diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index 98b10e9..b84d888 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -10445,6 +10445,10 @@ unicode_compare(PyObject *str1, PyObject *str2) void *data1, *data2; Py_ssize_t len1, len2, i; + /* a string is equal to itself */ + if (str1 == str2) + return 0; + kind1 = PyUnicode_KIND(str1); kind2 = PyUnicode_KIND(str2); data1 = PyUnicode_DATA(str1); @@ -10531,10 +10535,7 @@ PyUnicode_RichCompare(PyObject *left, PyObject *right, int op) return Py_True; } } - if (left == right) - result = 0; - else - result = unicode_compare(left, right); + result = unicode_compare(left, right); /* Convert the return value to a Boolean */ switch (op) { |