aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Kagamino Lehoux <martin@lehoux.net>2025-02-11 06:33:33 +0100
committerMartin Kagamino Lehoux <martin@lehoux.net>2025-02-11 06:33:33 +0100
commit92a97df033086d0ed88c38ad1efe4a2a023eb5fe (patch)
treeb1dfd84872ec9409a9282f4359b59be830d1acec
parent10379fdde9fa5e94a955fe35f14e5b35de2a0e5d (diff)
feat(json): Reduce int memory usage
-rw-r--r--README.md2
-rw-r--r--json.c2
-rw-r--r--main.c8
3 files changed, 7 insertions, 5 deletions
diff --git a/README.md b/README.md
index 431a2d0..24274e1 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,5 @@
# Kagamic
## TODO
+
+- Testing setup
diff --git a/json.c b/json.c
index 6948edf..cf40634 100644
--- a/json.c
+++ b/json.c
@@ -14,7 +14,7 @@ typedef struct {
} parse_integer_result;
parse_integer_result parse_integer(Arena *a, char *src, uintptr_t pos) {
- int *ints = new (a, int, 16); // TODO: reuse in parsing
+ char ints[16];
int i = 0;
while (isdigit(src[pos + i])) {
int val = (src[pos + i] - '0');
diff --git a/main.c b/main.c
index 8d46d82..2028049 100644
--- a/main.c
+++ b/main.c
@@ -32,7 +32,7 @@ int main() {
JSON json_int = JSON_parse(&perm, "123");
assert(*json_int.integer == 123);
printf("Arena: mem=%d B\n", Arena_get_used(perm));
- assert(Arena_get_used(perm) == 72);
+ assert(Arena_get_used(perm) == 5);
JSON json_int_array = JSON_parse(&perm, "[1,2,3]");
assert(json_int_array.integer == NULL);
assert(json_int_array.array->len == 3);
@@ -42,13 +42,13 @@ int main() {
}
assert(sum == 6);
printf("Arena: mem=%d B\n", Arena_get_used(perm));
- assert(Arena_get_used(perm) == 304);
+ assert(Arena_get_used(perm) == 48);
assert(*Vec_get(JSON_parse(&perm, "[1, 2, 3]").array, int, 1) == 2);
printf("Arena: mem=%d B\n", Arena_get_used(perm));
- assert(Arena_get_used(perm) == 536);
+ assert(Arena_get_used(perm) == 88);
JSON js = JSON_parse(&perm, "\"abc\"");
assert(Str_equals(*js.string, S("abc")) == 1);
printf("Arena: mem=%d B\n", Arena_get_used(perm));
- assert(Arena_get_used(perm) == 539);
+ assert(Arena_get_used(perm) == 91);
return 0;
}