improve performance massively from 0.9 seconds to 0.38 seconds :)

This commit is contained in:
William Bell
2025-09-01 20:25:47 +01:00
parent 4f91bf48f3
commit 19268f3070
24 changed files with 479 additions and 369 deletions

View File

@@ -6,16 +6,15 @@
#include "assignment.h"
ArErr runtime_assignment(Translated *translated, RuntimeState *state,
void runtime_assignment(Translated *translated, RuntimeState *state,
struct Stack *stack) {
int64_t length = pop_bytecode(translated, state);
int64_t offset = pop_bytecode(translated, state);
int64_t prehash = pop_bytecode(translated, state);
int64_t from_register = pop_byte(translated, state);
uint64_t hash =
runtime_hash(arena_get(&translated->constants, offset), length, prehash);
ArgonObject *key =
new_string_object(arena_get(&translated->constants, offset), length);
void *data = arena_get(&translated->constants, offset);
uint64_t hash = runtime_hash(data, length, prehash);
ArgonObject *key = new_string_object(data, length, prehash, hash);
for (Stack *current_stack = stack; current_stack;
current_stack = current_stack->prev) {
ArgonObject *exists = hashmap_lookup_GC(current_stack->scope, hash);
@@ -26,5 +25,4 @@ ArErr runtime_assignment(Translated *translated, RuntimeState *state,
}
hashmap_insert_GC(stack->scope, hash, key, state->registers[from_register],
0);
return no_err;
}