From 6c641903b089d81fb193c3949ccc677b701bc55b Mon Sep 17 00:00:00 2001 From: eunhhu Date: Mon, 5 Oct 2026 07:53:22 +0100 Subject: Read a tree's items in compiled code from a run the frame keeps, start a run at the finger's leaf, and move indices only for a list an index refers to (021) - The frame keeps the run compiled code read a tree's item from last (the list as it was: its version); an item it holds is read from its column, else pure_run_item takes the item's run and steps. - pure_list_run starts at the leaf the finger keeps when it holds the position (a slice found by key just before): no second descent; the run after it is found from the root (PureRun.pathless). - LIST_APPEND and LIST_REMOVE move index states only for a list one refers to. - A search (core only): 89 ms compiled (answers the executor's). --- core/module-list.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'core/module-list.h') diff --git a/core/module-list.h b/core/module-list.h index 0addcf0..6251786 100644 --- a/core/module-list.h +++ b/core/module-list.h @@ -37,10 +37,13 @@ typedef struct { size_t start; unsigned count; union { const double *numbers; const int64_t *integers; const PureSpan *texts; } column[16]; - /* Where the run is in the list's tree, for the next one. */ + /* Where the run is in the list's tree, for the next one (path[depth] + * its leaf); pathless: its leaf alone is known (the next is found from + * the root). */ const void *path[16]; uint8_t taken[16]; unsigned depth; + bool pathless; } PureRun; /* A list holds up to PURE_LIST_ITEMS items, a run up to PURE_LIST_RUN. */ -- cgit v1.2.3