From 394d35287a2b1a51e75a4bea8e20d7020df98208 Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Wed, 29 Jan 2025 17:00:50 -0800 Subject: [PATCH] fix default lookup rule --- src/eval/eval_ir.c | 9 ++------- src/eval/eval_ir.h | 9 +++++++++ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/eval/eval_ir.c b/src/eval/eval_ir.c index 67abc754..53211550 100644 --- a/src/eval/eval_ir.c +++ b/src/eval/eval_ir.c @@ -76,13 +76,8 @@ e_select_ir_ctx(E_IRCtx *ctx) internal E_LookupRule * e_lookup_rule_from_string(String8 string) { - local_persist read_only E_LookupRule e_lookup_rule__default = - { - str8_lit_comp("default"), - E_LOOKUP_INFO_FUNCTION_NAME(default), - E_LOOKUP_FUNCTION_NAME(default), - }; E_LookupRule *result = &e_lookup_rule__default; + if(e_ir_ctx->lookup_rule_map != 0 && e_ir_ctx->lookup_rule_map->slots_count != 0) { U64 hash = e_hash_from_string(5381, string); U64 slot_idx = hash%e_ir_ctx->lookup_rule_map->slots_count; @@ -142,7 +137,7 @@ E_LOOKUP_INFO_FUNCTION_DEF(default) E_LOOKUP_FUNCTION_DEF(default) { - E_Lookup lookup = {0}; + E_Lookup lookup = {{&e_irnode_nil}}; switch(kind) { default:{}break; diff --git a/src/eval/eval_ir.h b/src/eval/eval_ir.h index 0053ff76..7c747e5c 100644 --- a/src/eval/eval_ir.h +++ b/src/eval/eval_ir.h @@ -83,6 +83,9 @@ typedef E_LOOKUP_INFO_FUNCTION_SIG(E_LookupInfoFunctionType); #define E_LOOKUP_FUNCTION_DEF(name) internal E_LOOKUP_FUNCTION_SIG(E_LOOKUP_FUNCTION_NAME(name)) typedef E_LOOKUP_FUNCTION_SIG(E_LookupFunctionType); +E_LOOKUP_INFO_FUNCTION_DEF(default); +E_LOOKUP_FUNCTION_DEF(default); + typedef struct E_LookupRule E_LookupRule; struct E_LookupRule { @@ -125,6 +128,12 @@ struct E_IRCtx //////////////////////////////// //~ rjf: Globals +local_persist read_only E_LookupRule e_lookup_rule__default = +{ + str8_lit_comp("default"), + E_LOOKUP_INFO_FUNCTION_NAME(default), + E_LOOKUP_FUNCTION_NAME(default), +}; global read_only E_IRNode e_irnode_nil = {&e_irnode_nil, &e_irnode_nil, &e_irnode_nil}; thread_static E_IRCtx *e_ir_ctx = 0;