slight speed-up in unicode/bytes indexing
authorStefan Behnel <scoder@users.berlios.de>
Mon, 3 May 2010 16:13:59 +0000 (18:13 +0200)
committerStefan Behnel <scoder@users.berlios.de>
Mon, 3 May 2010 16:13:59 +0000 (18:13 +0200)
Cython/Compiler/Optimize.py

index c01c6434e1f7c5d93da966000a73fe4dd45f4734..42fb3ecd4a561c0292c15b92891fef10fe0c8b6d 100644 (file)
@@ -2423,7 +2423,7 @@ impl = """
 static CYTHON_INLINE Py_UNICODE __Pyx_PyUnicode_GetItemInt(PyObject* unicode, Py_ssize_t index, int check_bounds) {
     if (check_bounds) {
         if (unlikely(index >= PyUnicode_GET_SIZE(unicode)) |
-            unlikely(index < -PyUnicode_GET_SIZE(unicode))) {
+            ((index < 0) & unlikely(index < -PyUnicode_GET_SIZE(unicode)))) {
             PyErr_Format(PyExc_IndexError, "string index out of range");
             return (Py_UNICODE)-1;
         }
@@ -2444,7 +2444,7 @@ impl = """
 static CYTHON_INLINE char __Pyx_PyBytes_GetItemInt(PyObject* bytes, Py_ssize_t index, int check_bounds) {
     if (check_bounds) {
         if (unlikely(index >= PyBytes_GET_SIZE(bytes)) |
-            unlikely(index < -PyBytes_GET_SIZE(bytes))) {
+            ((index < 0) & unlikely(index < -PyBytes_GET_SIZE(bytes)))) {
             PyErr_Format(PyExc_IndexError, "string index out of range");
             return -1;
         }