made an immutable map object specifically for builtins

This commit is contained in:
Francesco Cozzuto
2021-11-29 16:35:15 +01:00
parent ac4dfbc8d3
commit 0d805b84b0
9 changed files with 211 additions and 109 deletions
+12 -4
View File
@@ -104,8 +104,11 @@ void Runtime_Free(Runtime *runtime)
Object *Runtime_GetBuiltins(Runtime *runtime, Error *error)
{
if(runtime->builtins == NULL)
runtime->builtins = Object_NewMap(-1, runtime->heap, error);
{
runtime->builtins = Object_NewBuiltinsMap(runtime, Runtime_GetHeap(runtime), error);
if(runtime->builtins == NULL)
return NULL;
}
return runtime->builtins;
}
@@ -790,8 +793,13 @@ static _Bool step(Runtime *runtime, Error *error)
{
// Variable not defined locally.
if(runtime->builtins != NULL)
obj = Object_Select(runtime->builtins, key, runtime->heap, error);
Object *builtins = Runtime_GetBuiltins(runtime, error);
if(builtins == NULL)
// Failed to create builtins map.
return 0;
obj = Object_Select(runtime->builtins, key, runtime->heap, error);
if(obj == NULL)
{