Skip to content

fix: allocate upper list slots on a load only for lists the dump fills - #151

Merged
doubleinfinity merged 1 commit into
mainfrom
development
Oct 5, 2026
Merged

doubleinfinity merged 1 commit into
mainfrom
development

Conversation

@doubleinfinity

Copy link
Copy Markdown
Contributor

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.

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.
@doubleinfinity
doubleinfinity merged commit 49ab5a7 into main Oct 5, 2026
7 checks passed
@doubleinfinity
doubleinfinity deleted the development branch October 5, 2026 01:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant