Feature: Use arena-allocation for memory handling
Arena allocation make deallocation of nested structed MUCH faster, and improves the spatial locality of allocations. It makes no sense to deallocate only parts of a JSON structure so arenas are a good fit here.
This commit is contained in:
committed by
Ole Kristian Morud
parent
f58c5dcfee
commit
b3821cf8bf
@@ -2,6 +2,7 @@
|
||||
#ifndef _JSON_VALUE_H
|
||||
#define _JSON_VALUE_H
|
||||
|
||||
#include "arena.h"
|
||||
#include "config.h"
|
||||
#include <stdbool.h> // bool
|
||||
|
||||
@@ -9,7 +10,7 @@ typedef struct obj_entry {
|
||||
char const* key;
|
||||
struct json_value* val;
|
||||
struct obj_entry* next;
|
||||
} * __p_obj_entry;
|
||||
}* __p_obj_entry;
|
||||
|
||||
typedef __p_obj_entry obj_t[OBJ_SIZE];
|
||||
|
||||
@@ -32,11 +33,11 @@ struct json_value {
|
||||
};
|
||||
|
||||
void* obj_at(obj_t m, char* const key);
|
||||
bool obj_insert(obj_t m, char* const key, struct json_value* value);
|
||||
void obj_delete(obj_t* m);
|
||||
bool obj_insert(obj_t m, char* const key, struct json_value* value, arena_t* arena);
|
||||
void obj_delete(obj_t* m, arena_t* arena);
|
||||
|
||||
void print_json(struct json_value val, int indent);
|
||||
|
||||
void json_value_delete(struct json_value val);
|
||||
void json_value_delete(struct json_value val, arena_t* arena);
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user