From 8873bf501619b34e75ad5f304e1c6f896a8cb0e9 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sun, 25 Jun 2023 10:55:35 +0200 Subject: [PATCH] LibJS/Bytecode: Use ToString instead of generic add() in ConcatString This avoids invoking valueOf() on the values, which is observable. 48 new passes on test262. :^) --- Userland/Libraries/LibJS/Bytecode/Op.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Userland/Libraries/LibJS/Bytecode/Op.cpp b/Userland/Libraries/LibJS/Bytecode/Op.cpp index 1595bd2e42..9515265a23 100644 --- a/Userland/Libraries/LibJS/Bytecode/Op.cpp +++ b/Userland/Libraries/LibJS/Bytecode/Op.cpp @@ -380,7 +380,8 @@ ThrowCompletionOr CopyObjectExcludingProperties::execute_impl(Bytecode::In ThrowCompletionOr ConcatString::execute_impl(Bytecode::Interpreter& interpreter) const { auto& vm = interpreter.vm(); - interpreter.reg(m_lhs) = TRY(add(vm, interpreter.reg(m_lhs), interpreter.accumulator())); + auto string = TRY(interpreter.accumulator().to_primitive_string(vm)); + interpreter.reg(m_lhs) = PrimitiveString::create(vm, interpreter.reg(m_lhs).as_string(), string); return {}; }