From 6137e91c4a582417c519d19f9e903776b7d9fd04 Mon Sep 17 00:00:00 2001 From: Taylan Kammer Date: Wed, 23 Sep 2026 14:17:34 +0200 Subject: Meta Alloc size classes start at 256. --- doc/0/A-meta_alloc.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'doc') diff --git a/doc/0/A-meta_alloc.md b/doc/0/A-meta_alloc.md index 85c704c..7383ec2 100644 --- a/doc/0/A-meta_alloc.md +++ b/doc/0/A-meta_alloc.md @@ -104,14 +104,14 @@ Zisp runtime, that the operating system reports that the process is using hundreds of gigabytes of virtual memory, do not panic; it's a feature, not a bug, and completely benign. -As for the size classes: They simply go from 128 bytes to 4 MiB in -perfect powers of two; in other words, from 2^7 to 2^22. There are -certain benefits to using exact powers of two, and 128 bytes - 4 MiB +As for the size classes: They simply go from 256 bytes to 8 MiB in +perfect powers of two; in other words, from 2^8 to 2^23. There are +certain benefits to using exact powers of two, and 256 bytes - 8 MiB seems like a reasonable range. Code using Meta Alloc must be aware that only these size classes are supported, and try to make optimal use of them. -**WARNING:** Calling `alloc()` with a size smaller than 128 or one +**WARNING:** Calling `alloc()` with a size smaller than 256 or one that is not a perfect power of two will lead to catastrophic bugs under optimized builds of Zisp. @@ -218,11 +218,11 @@ values used by the implementation are as follows: * Maximum count: 16 Indexes -* Smallest size class: 128 bytes +* Smallest size class: 256 bytes The extra Index array starts after 64 bytes, and requires 64 bytes, -since it stores up to 16 32-bit integers; that's a total size of 128, -which fits exactly into the smallest size. +since it stores up to 16 32-bit integers; that's a total size of 256, +which fits into the smallest size. The 64-byte padding is to allow for efficient bulk memory transfer using up to 512-bit SIMD instructions on modern processors. -- cgit v1.2.3