From dbf774ccbf49f5ea99644fbfd5bc36fdf6b1d6f4 Mon Sep 17 00:00:00 2001 From: Stefan Behnel Date: Mon, 1 Nov 2010 19:39:48 +0100 Subject: [PATCH] use branch hints in macros of slicing work-around --- Cython/Compiler/ModuleNode.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Cython/Compiler/ModuleNode.py b/Cython/Compiler/ModuleNode.py index e00ccd07..6cf3b176 100644 --- a/Cython/Compiler/ModuleNode.py +++ b/Cython/Compiler/ModuleNode.py @@ -598,17 +598,17 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode): #define __Pyx_PySequence_SetSlice(obj, a, b, value) PySequence_SetSlice(obj, a, b, value) #define __Pyx_PySequence_DelSlice(obj, a, b) PySequence_DelSlice(obj, a, b) #else - #define __Pyx_PySequence_GetSlice(obj, a, b) ((!(obj)) ? \\ + #define __Pyx_PySequence_GetSlice(obj, a, b) (unlikely(!(obj)) ? \\ (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), (PyObject*)0) : \\ - (((obj)->ob_type->tp_as_mapping) ? (PySequence_GetSlice(obj, a, b)) : \\ + (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_GetSlice(obj, a, b)) : \\ (PyErr_Format(PyExc_TypeError, "'%.200s' object is unsliceable", (obj)->ob_type->tp_name), (PyObject*)0))) - #define __Pyx_PySequence_SetSlice(obj, a, b, value) ((!(obj)) ? \\ + #define __Pyx_PySequence_SetSlice(obj, a, b, value) (unlikely(!(obj)) ? \\ (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \\ - (((obj)->ob_type->tp_as_mapping) ? (PySequence_SetSlice(obj, a, b, value)) : \\ + (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_SetSlice(obj, a, b, value)) : \\ (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice assignment", (obj)->ob_type->tp_name), -1))) - #define __Pyx_PySequence_DelSlice(obj, a, b) ((!(obj)) ? \\ + #define __Pyx_PySequence_DelSlice(obj, a, b) (unlikely(!(obj)) ? \\ (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \\ - (((obj)->ob_type->tp_as_mapping) ? (PySequence_DelSlice(obj, a, b)) : \\ + (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_DelSlice(obj, a, b)) : \\ (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice deletion", (obj)->ob_type->tp_name), -1))) #endif -- 2.26.2