From 373307db5b4401b950a45cefc0ba7eba95f912b1 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sat, 26 Apr 2025 11:57:34 +0200 Subject: [PATCH] LibJS: Mark `arguments` local as initialized after creating it This avoids emitting an unnecessary TDZ check for the first time we access the arguments object. --- Libraries/LibJS/Bytecode/Generator.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Libraries/LibJS/Bytecode/Generator.cpp b/Libraries/LibJS/Bytecode/Generator.cpp index 207a5f3094b..f2f3a368d0f 100644 --- a/Libraries/LibJS/Bytecode/Generator.cpp +++ b/Libraries/LibJS/Bytecode/Generator.cpp @@ -65,6 +65,9 @@ CodeGenerationErrorOr Generator::emit_function_declaration_instantiation(E } else { emit(dst, Op::CreateArguments::Kind::Mapped, function.is_strict_mode()); } + + if (local_var_index.has_value()) + set_local_initialized(Identifier::Local::variable(local_var_index.value())); } auto const& formal_parameters = function.formal_parameters();