You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We currently allocate either a `leafNode` or a `node` and cast between
them. This is potentially unsafe, since at times we are holding a
`*node`, part of which is outside a `leafNode` object.
We remove this hack by moving the children list to a separate object
and having a pointer to it inside `node`. We also move the
`subtreeCount` to save space, since it is not useful in the leaves
(this offsets the size of the extra pointer for leaves, which are the
vast majority).
The separate object is still allocated together with the inner node,
so this does not increase the number of allocations.
Fixes#5200
0 commit comments