diff --git a/anonymous-function-test.ar b/anonymous-function-test.ar index 3fcc5cf..6a7a012 100644 --- a/anonymous-function-test.ar +++ b/anonymous-function-test.ar @@ -1,3 +1,4 @@ -let f(i) = do - while (i) i=i-1 -f(1e6) \ No newline at end of file +let i = 1000000 +while (i) do + i=i-1 +term.log(add) \ No newline at end of file diff --git a/app.py b/app.py index f971fa9..827d8f8 100644 --- a/app.py +++ b/app.py @@ -1,4 +1,4 @@ -i = 10000000 +i = 1_000_000 while i: print(i) i=i-1 \ No newline at end of file diff --git a/src/translator/function/function.c b/src/translator/function/function.c index 6e0c5d7..e96b985 100644 --- a/src/translator/function/function.c +++ b/src/translator/function/function.c @@ -14,6 +14,8 @@ size_t translate_parsed_function(Translated *translated, ParsedFunction *parsedFunction, ArErr *err) { DArray main_bytecode = translated->bytecode; + uint8_t old_assignment = translated->registerAssignment; + translated->registerAssignment = 1; darray_init(&translated->bytecode, sizeof(uint8_t)); set_registers(translated, 1); translate_parsed(translated, parsedFunction->body, err); @@ -23,6 +25,7 @@ size_t translate_parsed_function(Translated *translated, size_t function_bytecode_length = translated->bytecode.size; darray_free(&translated->bytecode, NULL); translated->bytecode = main_bytecode; + translated->registerAssignment = old_assignment; size_t start = push_instruction_byte(translated, OP_LOAD_FUNCTION); size_t offset = arena_push(&translated->constants, parsedFunction->name, strlen(parsedFunction->name));