From 7430dee5cfac50be9bc92ff6bc53ca19f4319998 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Wed, 5 Jul 2023 12:51:44 +0200 Subject: [PATCH] LibJS/Bytecode: Make ClassDeclaration not clobber the accumulator 2 new passes on test262. :^) --- Userland/Libraries/LibJS/Bytecode/ASTCodegen.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Userland/Libraries/LibJS/Bytecode/ASTCodegen.cpp b/Userland/Libraries/LibJS/Bytecode/ASTCodegen.cpp index fffe584c9b..ec1ee2d2fc 100644 --- a/Userland/Libraries/LibJS/Bytecode/ASTCodegen.cpp +++ b/Userland/Libraries/LibJS/Bytecode/ASTCodegen.cpp @@ -2303,8 +2303,13 @@ Bytecode::CodeGenerationErrorOr SwitchStatement::generate_labelled_evaluat Bytecode::CodeGenerationErrorOr ClassDeclaration::generate_bytecode(Bytecode::Generator& generator) const { + auto accumulator_backup_reg = generator.allocate_register(); + generator.emit(accumulator_backup_reg); + TRY(m_class_expression->generate_bytecode(generator)); generator.emit(generator.intern_identifier(m_class_expression.ptr()->name()), Bytecode::Op::SetVariable::InitializationMode::Initialize); + + generator.emit(accumulator_backup_reg); return {}; }