* src/alloc.c: Avoid O(N²) complexity when unchaining markers (bug#24548).
commitcf3164523b32f01dbaad2c1364ecf2dcf8f22aa5
authorStefan Monnier <monnier@iro.umontreal.ca>
Fri, 23 Mar 2018 15:09:54 +0000 (23 11:09 -0400)
committerStefan Monnier <monnier@iro.umontreal.ca>
Fri, 23 Mar 2018 15:09:54 +0000 (23 11:09 -0400)
tree9dca9f6732e7b55b0285af36ff2de87919d4dde9
parent6695c1be51bd8a1e208ae02505b2a6fa64c85e68
* src/alloc.c: Avoid O(N²) complexity when unchaining markers (bug#24548).

Unchain all dead markers with a single scan of the markers list,
instead of calling the O(N) 'unchain_marker' N times.

(unchain_dead_markers): New function.
(sweep_buffers): Use it.
(gc_sweep): Sweep buffers before markers.
(sweep_misc): Check that markers have been unchained when reclaiming them.
src/alloc.c