Commit 26c22923 authored by Robert Bradshaw's avatar Robert Bradshaw

Merge branch 'master-robertwb'

parents d1e5d1f6 be403527
...@@ -3172,7 +3172,13 @@ class IndexNode(ExprNode): ...@@ -3172,7 +3172,13 @@ class IndexNode(ExprNode):
def generate_setitem_code(self, value_code, code): def generate_setitem_code(self, value_code, code):
if self.index.type.is_int: if self.index.type.is_int:
function = "__Pyx_SetItemInt" if (self.base.type.is_builtin_type
and self.base.type.name == "list"
and not code.globalstate.directives['wraparound']
and not code.globalstate.directives['boundscheck']):
function = "__Pyx_SetItemListInt_NoCheck"
else:
function = "__Pyx_SetItemInt"
index_code = self.index.result() index_code = self.index.result()
code.globalstate.use_utility_code( code.globalstate.use_utility_code(
UtilityCode.load_cached("SetItemInt", "ObjectHandling.c")) UtilityCode.load_cached("SetItemInt", "ObjectHandling.c"))
......
...@@ -354,6 +354,19 @@ static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObje ...@@ -354,6 +354,19 @@ static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObje
return __Pyx_SetItemInt_Generic(o, PyInt_FromSsize_t(i), v); return __Pyx_SetItemInt_Generic(o, PyInt_FromSsize_t(i), v);
} }
#define __Pyx_SetItemListInt_NoCheck(o, i, v, size, to_py_func) (((size) <= sizeof(Py_ssize_t)) ? \
__Pyx_SetItemIntList_NoCheck(o, i, v) : \
__Pyx_SetItemInt_Generic(o, to_py_func(i), v))
static CYTHON_INLINE int __Pyx_SetItemIntList_NoCheck(PyObject *o, Py_ssize_t n, PyObject *v) {
PyObject* old = PyList_GET_ITEM(o, n);
Py_INCREF(v);
PyList_SET_ITEM(o, n, v);
Py_DECREF(old);
return 1;
}
/////////////// DelItemInt.proto /////////////// /////////////// DelItemInt.proto ///////////////
#define __Pyx_DelItemInt(o, i, size, to_py_func) (((size) <= sizeof(Py_ssize_t)) ? \ #define __Pyx_DelItemInt(o, i, size, to_py_func) (((size) <= sizeof(Py_ssize_t)) ? \
......
cimport cqueue cimport cqueue
cimport python_exc
cdef class Queue: cdef class Queue:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment