mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-04 21:08:40 +00:00
rd: derive schema tree parse on startup rather than recomputing every time
This commit is contained in:
@@ -74,6 +74,7 @@ e_select_ir_ctx(E_IRCtx *ctx)
|
|||||||
e_ir_state->arena = arena;
|
e_ir_state->arena = arena;
|
||||||
e_ir_state->arena_eval_start_pos = arena_pos(arena);
|
e_ir_state->arena_eval_start_pos = arena_pos(arena);
|
||||||
}
|
}
|
||||||
|
arena_pop_to(e_ir_state->arena, e_ir_state->arena_eval_start_pos);
|
||||||
e_ir_state->ctx = ctx;
|
e_ir_state->ctx = ctx;
|
||||||
e_ir_state->used_tag_map = push_array(e_ir_state->arena, E_UsedTagMap, 1);
|
e_ir_state->used_tag_map = push_array(e_ir_state->arena, E_UsedTagMap, 1);
|
||||||
e_ir_state->used_tag_map->slots_count = 64;
|
e_ir_state->used_tag_map->slots_count = 64;
|
||||||
|
|||||||
@@ -632,6 +632,7 @@ e_select_parse_ctx(E_ParseCtx *ctx)
|
|||||||
e_parse_state->arena = arena;
|
e_parse_state->arena = arena;
|
||||||
e_parse_state->arena_eval_start_pos = arena_pos(arena);
|
e_parse_state->arena_eval_start_pos = arena_pos(arena);
|
||||||
}
|
}
|
||||||
|
arena_pop_to(e_parse_state->arena, e_parse_state->arena_eval_start_pos);
|
||||||
e_parse_state->ctx = ctx;
|
e_parse_state->ctx = ctx;
|
||||||
e_parse_state->parse_cache_slots_count = 1024;
|
e_parse_state->parse_cache_slots_count = 1024;
|
||||||
e_parse_state->parse_cache_slots = push_array(e_parse_state->arena, E_ParseCacheSlot, e_parse_state->parse_cache_slots_count);
|
e_parse_state->parse_cache_slots = push_array(e_parse_state->arena, E_ParseCacheSlot, e_parse_state->parse_cache_slots_count);
|
||||||
|
|||||||
@@ -180,7 +180,7 @@ struct E_ParseCtx
|
|||||||
};
|
};
|
||||||
|
|
||||||
////////////////////////////////
|
////////////////////////////////
|
||||||
//~ rjf: Parse State (Stateful thread-local caching mechanisms, not provided by user)
|
//~ rjf: Parse State (stateful thread-local caching mechanisms, not provided by user)
|
||||||
|
|
||||||
typedef struct E_ParseCacheNode E_ParseCacheNode;
|
typedef struct E_ParseCacheNode E_ParseCacheNode;
|
||||||
struct E_ParseCacheNode
|
struct E_ParseCacheNode
|
||||||
|
|||||||
@@ -1496,16 +1496,15 @@ rd_title_fstrs_from_cfg(Arena *arena, RD_Cfg *cfg, Vec4F32 secondary_color, F32
|
|||||||
internal MD_Node *
|
internal MD_Node *
|
||||||
rd_schema_from_name(Arena *arena, String8 name)
|
rd_schema_from_name(Arena *arena, String8 name)
|
||||||
{
|
{
|
||||||
String8 schema_string = {0};
|
MD_Node *schema = &md_nil_node;
|
||||||
for EachElement(idx, rd_name_schema_info_table)
|
for EachElement(idx, rd_name_schema_info_table)
|
||||||
{
|
{
|
||||||
if(str8_match(name, rd_name_schema_info_table[idx].name, 0))
|
if(str8_match(name, rd_name_schema_info_table[idx].name, 0))
|
||||||
{
|
{
|
||||||
schema_string = rd_name_schema_info_table[idx].schema;
|
schema = rd_state->schemas[idx];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
MD_Node *schema = md_tree_from_string(arena, schema_string)->first;
|
|
||||||
return schema;
|
return schema;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -11906,6 +11905,16 @@ rd_init(CmdLine *cmdln)
|
|||||||
rd_state->drag_drop_regs = push_array(rd_state->drag_drop_arena, RD_Regs, 1);
|
rd_state->drag_drop_regs = push_array(rd_state->drag_drop_arena, RD_Regs, 1);
|
||||||
rd_state->top_regs = &rd_state->base_regs;
|
rd_state->top_regs = &rd_state->base_regs;
|
||||||
|
|
||||||
|
// rjf: set up schemas
|
||||||
|
{
|
||||||
|
U64 schemas_count = ArrayCount(rd_name_schema_info_table);
|
||||||
|
rd_state->schemas = push_array(rd_state->arena, MD_Node *, schemas_count);
|
||||||
|
for EachIndex(idx, schemas_count)
|
||||||
|
{
|
||||||
|
rd_state->schemas[idx] = md_tree_from_string(rd_state->arena, rd_name_schema_info_table[idx].schema)->first;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// rjf: set up top-level config entity trees
|
// rjf: set up top-level config entity trees
|
||||||
{
|
{
|
||||||
rd_state->root_cfg = rd_cfg_alloc();
|
rd_state->root_cfg = rd_cfg_alloc();
|
||||||
|
|||||||
@@ -834,6 +834,9 @@ struct RD_State
|
|||||||
Arena *project_path_arena;
|
Arena *project_path_arena;
|
||||||
String8 project_path;
|
String8 project_path;
|
||||||
|
|
||||||
|
// rjf: schema table
|
||||||
|
MD_Node **schemas;
|
||||||
|
|
||||||
// rjf: log
|
// rjf: log
|
||||||
Log *log;
|
Log *log;
|
||||||
String8 log_path;
|
String8 log_path;
|
||||||
|
|||||||
Reference in New Issue
Block a user