From 467ea861794ea9a3028d12db1447ab54cd649957 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Fri, 23 Jun 2023 07:16:31 +0200 Subject: [PATCH] LibJS: Use bytecode for generator function default parameters Otherwise there's a mismatch between which interpreter we use. This fixes a regression in the AST interpreter score on test262. --- .../Libraries/LibJS/Runtime/ECMAScriptFunctionObject.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Userland/Libraries/LibJS/Runtime/ECMAScriptFunctionObject.cpp b/Userland/Libraries/LibJS/Runtime/ECMAScriptFunctionObject.cpp index c04e90e38d3..f1f3c6e1142 100644 --- a/Userland/Libraries/LibJS/Runtime/ECMAScriptFunctionObject.cpp +++ b/Userland/Libraries/LibJS/Runtime/ECMAScriptFunctionObject.cpp @@ -455,7 +455,10 @@ ThrowCompletionOr ECMAScriptFunctionObject::function_declaration_instantia } else if (i < execution_context_arguments.size() && !execution_context_arguments[i].is_undefined()) { argument_value = execution_context_arguments[i]; } else if (parameter.default_value) { - if (auto* bytecode_interpreter = vm.bytecode_interpreter_if_exists()) { + auto* bytecode_interpreter = vm.bytecode_interpreter_if_exists(); + if (static_cast(m_kind) == FunctionKind::Generator) + bytecode_interpreter = &vm.bytecode_interpreter(); + if (bytecode_interpreter) { auto value_and_frame = bytecode_interpreter->run_and_return_frame(realm, *m_default_parameter_bytecode_executables[default_parameter_index - 1], nullptr); if (value_and_frame.value.is_error()) return value_and_frame.value.release_error();