Roundup Robot added the comment:
New changeset 490720fc1525 by Raymond Hettinger in branch 'default':
Issue #24221: Small optimizations for heapq.
https://hg.python.org/cpython/rev/490720fc1525
--
nosy: +python-dev
___
Python tracker
Changes by Raymond Hettinger raymond.hettin...@gmail.com:
--
resolution: - fixed
status: open - closed
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue24221
___
Stefan Behnel added the comment:
There are calls to PyObject_RichCompareBool() in the loops, which means that
user code might get executed. What if that's evil code that modifies the heap
list? Couldn't that lead to list resizing and thus invalidation of the list
item pointer?
--
Serhiy Storchaka added the comment:
The list item pointer is updated just after calling PyObject_RichCompareBool().
The code LGTM.
--
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue24221
___
Stefan Behnel added the comment:
Ah, sorry, yes. I somehow misread the arguments being passed *into* richcompare
as subsequent array access. LGTM too. Sorry for the noise.
--
___
Python tracker rep...@bugs.python.org
Serhiy Storchaka added the comment:
Perhaps the code will look simpler if introduce the macro
_PyList_SWAP_ITEMS(list, i, j).
--
nosy: +serhiy.storchaka
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue24221
New submission from Raymond Hettinger:
The siftup() and siftdown() routines rearrange pointers in a list. The
generated code repeats the list object to ob_item lookup for each access. This
patch does that lookup only once per iteration. It cleans up the code by
replacing the
Changes by Raymond Hettinger raymond.hettin...@gmail.com:
Added file: http://bugs.python.org/file39414/time_heapify.py
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue24221
___
Changes by Raymond Hettinger raymond.hettin...@gmail.com:
--
priority: normal - low
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue24221
___
___