Skip to content

Commit 4b4b9ed

Browse files
committed
Refactor GC data traversal loops
Previusly, to redce stack usage GC traversed object properties and array elements in both directions. At first, it seeked backward from the last element, to find the last refcounted zval. Then, it traversed elements forward. As result, we had 2 non-spatial memory accesses for each object/array and usuall 2 expensive CPU cache misses. Now all the traversal algorithms are refactored to scan elements only in forward direction. The number of checks and GC stack usage should be the same. The order of element processing may be differenr, but this should not be a problem.
1 parent 885f935 commit 4b4b9ed

File tree

1 file changed

+409
-499
lines changed

1 file changed

+409
-499
lines changed

0 commit comments

Comments
 (0)