diff options
| author | eunhhu <[email protected]> | 2026-10-04 17:39:18 +0100 |
|---|---|---|
| committer | eunhhu <[email protected]> | 2026-10-04 17:39:18 +0100 |
| commit | 602780a58c3286d6843e8ff89bd7a3093891a7ad (patch) | |
| tree | fc0e18c28b434314c83904580e160a2ba6f34eac /Makefile | |
| parent | e6bd261b845f5b88d454d0ddaf0b11c12a76e25d (diff) | |
| download | pure-602780a58c3286d6843e8ff89bd7a3093891a7ad.tar.gz pure-602780a58c3286d6843e8ff89bd7a3093891a7ad.zip | |
Search an event's keyed lists by a key set and lists by fingers, add by key in one descent, and loop without recursion (020)
- An event's list keyed by a number keeps its keys beside its tree: bits
while they are small whole numbers, else an open-addressing table;
has() reads only that, and inserts, removes, key changes, their undoing
and clears keep it.
- Each thread keeps fingers on the last four leaves it read (list id and
version must match): reads by position and searches by key that land in
them do not descend.
- pure_list_add finds a key's place and inserts there in one descent; a
stored keyed list's appends take it too, journaled as inserts.
- Child searches count over the whole guide; item fields know at load
whether they are text; loops run on a stack of loop records, not by
recursion; module-list.c builds at -O3.
- test-module: the key set and fingers answer as a model at every step
(bits to table, removes inside runs, undone changes, clears, shares),
and a stored keyed list's adds replay from its journal.
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 6 |
1 files changed, 6 insertions, 0 deletions
@@ -38,6 +38,12 @@ $(BUILD)/obj/%.o: %.c $(HEADERS) @mkdir -p $(dir $@) $(CC) $(CPPFLAGS) $(CFLAGS) $(INCLUDES) -c $< -o $@ +# The lists' searches count a node's keys and positions whole, and move +# items in a leaf column by column: -O3 makes vector instructions of them +# (docs/design/020: 8% of a breadth first search). +LIST_OPTIMIZE ?= -O3 +$(BUILD)/obj/core/module-list.o: CFLAGS += $(LIST_OPTIMIZE) + # The links know nothing of the core: they build without its headers. $(BUILD)/obj/link/%.o: link/%.c $(wildcard link/*.h) @mkdir -p $(dir $@) |
