-
Notifications
You must be signed in to change notification settings - Fork 48
Open
Description
From my understanding, this code's intent is to eagerly allocate the next bucket if we're about to write the first entry of the last 1/8th of the current bucket.
7/8 1/8
<---------------------------><---->
...--] [========== current bucket =========] [-------------------------- next bucket...
↑
first entry of the last 1/8th
of the current bucket
The code currently checks if:
if index == (location.bucket_len - (location.bucket_len >> 3)) {...}
// -------------------------
// i.e. 1/8 * location.bucket_lenWhere index is - if I'm not mistaken a global vector index and should really be location.entry instead which corresponds to the relative location inside the current bucket:
if location.entry == (location.bucket_len - (location.bucket_len >> 3)) {...}NOTE: in practice, this would mean the current code was over-allocating, by allocating ahead of time for potentially unneeded buckets.
Metadata
Metadata
Assignees
Labels
No labels