From e02bfc916743a0327d76144b32b6ec6381e5907f Mon Sep 17 00:00:00 2001 From: eunhhu Date: Wed, 30 Sep 2026 15:51:32 +0100 Subject: Let a value's 8 bytes hold a number or an integer Before i64 (016 stage 2): a state's value, a record field's default, a list cell's number, the interpreter's stack slot and an instruction's constant become unions of a double and an int64_t (PureValue, anonymous unions in PureCell, Slot and PureOp). LOAD and STORE, and a list cell made from the stack, copy the bits; everything else reads .num as before. No behaviour changes: every check passes as it did. --- core/module-list.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'core/module-list.h') diff --git a/core/module-list.h b/core/module-list.h index d97aa77..603134a 100644 --- a/core/module-list.h +++ b/core/module-list.h @@ -19,7 +19,7 @@ * cell per field: a number, or text bytes the list owns. Every change made * during an event is logged; a failed event undoes the log in reverse and a * successful one frees what it replaced. */ -typedef struct { double num; unsigned char *text; size_t size; } PureCell; +typedef struct { union { double num; int64_t i64; }; unsigned char *text; size_t size; } PureCell; typedef struct PureList PureList; /* An event's list changes; a removed item's cells wait in cells. */ typedef struct { -- cgit v1.2.3