mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-07-31 03:10:03 +00:00
eliminate all old evaluation bundled helpers, eliminate old fragmented eval caches; move all to unified evaluation cache
This commit is contained in:
@@ -1454,47 +1454,3 @@ e_push_parse_from_string(Arena *arena, String8 text)
|
||||
scratch_end(scratch);
|
||||
return parse;
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Parse Cache Functions
|
||||
|
||||
internal void
|
||||
e_parse_eval_begin(void)
|
||||
{
|
||||
if(e_parse_state == 0)
|
||||
{
|
||||
Arena *arena = arena_alloc();
|
||||
e_parse_state = push_array(arena, E_ParseState, 1);
|
||||
e_parse_state->arena = arena;
|
||||
e_parse_state->arena_eval_start_pos = arena_pos(e_parse_state->arena);
|
||||
}
|
||||
arena_pop_to(e_parse_state->arena, e_parse_state->arena_eval_start_pos);
|
||||
e_parse_state->cache_slots_count = 4096;
|
||||
e_parse_state->cache_slots = push_array(e_parse_state->arena, E_ParseCacheSlot, e_parse_state->cache_slots_count);
|
||||
}
|
||||
|
||||
internal E_Parse
|
||||
e_parse_from_string(String8 string)
|
||||
{
|
||||
U64 hash = e_hash_from_string(5381, string);
|
||||
U64 slot_idx = hash%e_parse_state->cache_slots_count;
|
||||
E_ParseCacheSlot *slot = &e_parse_state->cache_slots[slot_idx];
|
||||
E_ParseCacheNode *node = 0;
|
||||
for(E_ParseCacheNode *n = slot->first; n != 0; n = n->next)
|
||||
{
|
||||
if(str8_match(n->string, string, 0))
|
||||
{
|
||||
node = n;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(node == 0)
|
||||
{
|
||||
node = push_array(e_parse_state->arena, E_ParseCacheNode, 1);
|
||||
SLLQueuePush(slot->first, slot->last, node);
|
||||
node->string = push_str8_copy(e_parse_state->arena, string);
|
||||
node->parse = e_push_parse_from_string(e_parse_state->arena, node->string);
|
||||
}
|
||||
E_Parse result = node->parse;
|
||||
return result;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user