aboutsummaryrefslogtreecommitdiffstats
path: root/core/module-list.h
diff options
context:
space:
mode:
authoreunhhu <[email protected]>2026-10-05 16:07:48 +0100
committereunhhu <[email protected]>2026-10-05 16:07:48 +0100
commit6cd7f5a415f9286ae4bec58545dccd89a15ef46d (patch)
tree826d39f784273751d9ce1c5c70701ca8158b6d7c /core/module-list.h
parent5aaed2a58d0b5c3dea22b9f915eb02a823db49ac (diff)
downloadpure-6cd7f5a415f9286ae4bec58545dccd89a15ef46d.tar.gz
pure-6cd7f5a415f9286ae4bec58545dccd89a15ef46d.zip
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
Diffstat (limited to 'core/module-list.h')
-rw-r--r--core/module-list.h9
1 files changed, 9 insertions, 0 deletions
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. */