From 6cd7f5a415f9286ae4bec58545dccd89a15ef46d Mon Sep 17 00:00:00 2001 From: eunhhu Date: Mon, 5 Oct 2026 16:07:48 +0100 Subject: The tier, first (023): a nest of loops as SSA, its stack, locals and states values in registers (x20-x28 too, the frame's read again where it ends), whole numbers integers by their facts, the message's fields and lists' columns read once, invariants made before inner loops; where anything does not hold it gives up to the executor at the instruction (pure_run_rest) and the generic code goes on. roots 22.9 to 14.0 ms, knapsack 1,030 to 38.8, matmul 908 to 48.6; module_tier checks random handlers against the executor --- core/module-list.h | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'core/module-list.h') diff --git a/core/module-list.h b/core/module-list.h index 60bce95..21b929c 100644 --- a/core/module-list.h +++ b/core/module-list.h @@ -147,6 +147,15 @@ PureResult pure_list_keyed(PureList *, int field); * it is not keyed by a number, is a copy, or memory runs out (it is * searched as before). */ bool pure_list_hashed(PureList *); +/* Whether an event's list is as the tier's code reads it (docs/design/023): + * needs 1, found by key: DENSE; 2, read by position: FLAT, or DENSE with + * every key below its count (a key its position); 4, a key's position: the + * latter; and each field in narrow a number column of one or four bytes. + * Its full (pure_list_layout's LIST_FULL_AT) then says whether every key + * below its count is there. */ +bool pure_list_suits(PureList *, unsigned needs, unsigned narrow); +/* Whether a DENSE list holds every key below its count (a key is its position). */ +bool pure_list_full(PureList *); /* Whether key is there, by the set: false when the list keeps none (search it then). */ bool pure_list_contains(const PureList *, double key, bool *found); /* The bytes it keeps beside its items for that. */ -- cgit v1.2.3