Repository navigation
fix: allocate upper list slots on a load only for lists the dump fills - #151
Merged
Merged
Conversation
A load gives a wide list to an upper list at or below the level of its node only if the dump fills that list. A wide list has a descriptor and m + 1 target slots. An empty list of this type is one empty word, as an empty list above the level of its node is. Thus a level in the layer table uses one word for each layer and no slots. The in-degree pass of the load promotes an empty word to a wide list when an entry at that layer refers to its node. The inbound counter of a list is on its wide descriptor. Insertion opens a wide list for each layer of a new node up to its level. Insertion promotes an empty word when it first counts into the word. The reverse update puts an entry into a list only after this count. Thus an empty word at or below the level of its node never holds an entry. The storage that a load makes follows the node count, m and the entries in the dump. A dump that keeps no list empty at or below a level loads to the same graph as before. Search and insertion on a loaded graph give the same results as before.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
A load gives a wide list to an upper list at or below the level of its node only if the dump fills that list. A wide list has a descriptor and m + 1 target slots. An empty list of this type is one empty word, as an empty list above the level of its node is. Thus a level in the layer table uses one word for each layer and no slots.
The in-degree pass of the load promotes an empty word to a wide list when an entry at that layer refers to its node. The inbound counter of a list is on its wide descriptor.
Insertion opens a wide list for each layer of a new node up to its level. Insertion promotes an empty word when it first counts into the word. The reverse update puts an entry into a list only after this count. Thus an empty word at or below the level of its node never holds an entry.
The storage that a load makes follows the node count, m and the entries in the dump. A dump that keeps no list empty at or below a level loads to the same graph as before. Search and insertion on a loaded graph give the same results as before.