diff options
| author | eunhhu <[email protected]> | 2026-09-25 13:27:11 +0100 |
|---|---|---|
| committer | eunhhu <[email protected]> | 2026-09-25 13:27:11 +0100 |
| commit | b4ec5eeaab82ee7c876f7d02e6430997f7240899 (patch) | |
| tree | fbd5918bf22b925b16aea3eb8a4b2ab060100c10 /src | |
| parent | c61aff54852d6f2fa63949950022e7a8ede1896c (diff) | |
| download | aup-b4ec5eeaab82ee7c876f7d02e6430997f7240899.tar.gz aup-b4ec5eeaab82ee7c876f7d02e6430997f7240899.zip | |
Emit Pure module format v4
Pure now loads only v4 modules. The new header counts records, which aup
does not declare yet, so the output changes only in its magic.
Diffstat (limited to 'src')
| -rw-r--r-- | src/aup.h | 2 | ||||
| -rw-r--r-- | src/compile.c | 4 |
2 files changed, 3 insertions, 3 deletions
@@ -3,7 +3,7 @@ #include <stdbool.h> #include <stddef.h> -/* aup v0a: source text to a Pure module v1 (Pure docs/design/008). */ +/* aup: source text to a Pure module (Pure docs/design/008-module-format.md). */ enum { AUP_SOURCE_LIMIT = 32768, AUP_MESSAGE = 160 }; typedef struct { diff --git a/src/compile.c b/src/compile.c index e95d16c..340e623 100644 --- a/src/compile.c +++ b/src/compile.c @@ -7,7 +7,7 @@ #include <stdlib.h> #include <string.h> -/* Limits and opcodes of Pure module format v3. */ +/* Limits and opcodes of Pure module format v4. */ enum { STATES = 32, INPUTS = 32, VIEWS = 24, HANDLERS = 64, CODE = 512, STACK = 64, NAME = 32, DEPTH = 64, FIELDS = 32, COLLECTIONS = 1, CONSTANTS = 64, CONSTANT_BYTES = 8192 }; enum { CONST, LOAD, DT, ADD, SUB, MUL, DIV, NEG, LT, LE, GT, GE, EQ, NE, AND, OR, NOT, @@ -1175,7 +1175,7 @@ static void generate(Compiler *c, unsigned char **module, size_t *size) { *size = 40 + 16u * c->states + 12u * c->collections + 16u * c->input_count + 8u * fields + 8u * c->constants + 16u * c->views + 12u * c->handler_count + 16u * c->code_count + used + c->constant_used; unsigned char *p = *module = allocate(c, *size); - memcpy(p, "PUREMOD3", 8); + memcpy(p, "PUREMOD4", 8); put16(p + 8, c->states); put16(p + 10, c->input_count); put16(p + 12, c->views); |
