Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Deletion is support in two ways: markDelete and recycle.
By markDeleted, a deleted flag is set at the higher 8 bits of the link size at level 0, no extra memory needed, the drawback is that the size of the links will be limited to 24bits, however, large enough in almost cases.
By recycle(now named recycle_in_test), all the nodes marked deletion will be kicked out, the slots they occupied will be recorded in a similar way to linked list, by adding two vars: reusable_entry / reusable_tail, and reusing the memory for label to store the next.
recycle should be used after some "markDeleted"s, for a small number of deletion, only markDeleted would be enough, it depends on the scenario how to combine with recycle.
I did some testing, it seems ok for markDeleted, but not that sure for recycle.