LibJS: Emit bytecode for function declaration instantiation

By doing that all instructions required for instantiation are emitted
once in compilation and then reused for subsequent calls, instead of
running generic instantiation process for each call.
This commit is contained in:
Aliaksandr Kalenik 2024-05-05 22:06:55 +02:00 committed by Andreas Kling
commit a4f70986a0
Notes: sideshowbarker 2024-07-17 10:31:19 +09:00
15 changed files with 440 additions and 449 deletions

View file

@ -685,7 +685,7 @@ ThrowCompletionOr<Value> perform_eval(VM& vm, Value x, CallerMode strict_caller,
// 29. If result.[[Type]] is normal, then
// a. Set result to the result of evaluating body.
auto executable_result = Bytecode::Generator::generate(vm, program, {});
auto executable_result = Bytecode::Generator::generate_from_ast_node(vm, program, {});
if (executable_result.is_error())
return vm.throw_completion<InternalError>(ErrorType::NotImplemented, TRY_OR_THROW_OOM(vm, executable_result.error().to_string()));