diff --git a/boa_engine/src/bytecompiler/class.rs b/boa_engine/src/bytecompiler/class.rs index 65d5a53b487..501614d69d4 100644 --- a/boa_engine/src/bytecompiler/class.rs +++ b/boa_engine/src/bytecompiler/class.rs @@ -75,7 +75,6 @@ impl ByteCompiler<'_, '_> { } compiler.emit_opcode(Opcode::SetReturnValue); - compiler.emit_opcode(Opcode::Return); let code = Gc::new(compiler.finish()); let index = self.functions.len() as u32; @@ -272,7 +271,6 @@ impl ByteCompiler<'_, '_> { field_compiler.pop_compile_environment(); field_compiler.emit_opcode(Opcode::SetReturnValue); - field_compiler.emit_opcode(Opcode::Return); field_compiler.code_block_flags |= CodeBlockFlags::IN_CLASS_FIELD_INITIALIZER; @@ -306,7 +304,6 @@ impl ByteCompiler<'_, '_> { field_compiler.pop_compile_environment(); field_compiler.emit_opcode(Opcode::SetReturnValue); - field_compiler.emit_opcode(Opcode::Return); field_compiler.code_block_flags |= CodeBlockFlags::IN_CLASS_FIELD_INITIALIZER; @@ -350,7 +347,6 @@ impl ByteCompiler<'_, '_> { field_compiler.pop_compile_environment(); field_compiler.emit_opcode(Opcode::SetReturnValue); - field_compiler.emit_opcode(Opcode::Return); field_compiler.code_block_flags |= CodeBlockFlags::IN_CLASS_FIELD_INITIALIZER; diff --git a/boa_engine/src/bytecompiler/function.rs b/boa_engine/src/bytecompiler/function.rs index f55b7ff4fb6..0273d1fdb87 100644 --- a/boa_engine/src/bytecompiler/function.rs +++ b/boa_engine/src/bytecompiler/function.rs @@ -4,7 +4,7 @@ use crate::{ builtins::function::ThisMode, bytecompiler::ByteCompiler, environments::CompileTimeEnvironment, - vm::{CodeBlock, CodeBlockFlags, Opcode}, + vm::{CodeBlock, CodeBlockFlags}, Context, }; use boa_ast::function::{FormalParameterList, FunctionBody}; @@ -151,15 +151,6 @@ impl FunctionCompiler { compiler.params = parameters.clone(); - if compiler - .bytecode - .last() - .filter(|last| **last == Opcode::Return as u8) - .is_none() - { - compiler.emit_opcode(Opcode::Return); - } - Gc::new(compiler.finish()) } } diff --git a/boa_engine/src/bytecompiler/mod.rs b/boa_engine/src/bytecompiler/mod.rs index 208fd9eec64..2ed4cbe575b 100644 --- a/boa_engine/src/bytecompiler/mod.rs +++ b/boa_engine/src/bytecompiler/mod.rs @@ -1415,6 +1415,7 @@ impl<'ctx, 'host> ByteCompiler<'ctx, 'host> { for ret in self.returns_to_patch.clone() { self.patch_jump(ret); } + self.emit_opcode(Opcode::Return); let name = self .context diff --git a/boa_engine/src/bytecompiler/statement/mod.rs b/boa_engine/src/bytecompiler/statement/mod.rs index d110242d6f7..67fc8b5c926 100644 --- a/boa_engine/src/bytecompiler/statement/mod.rs +++ b/boa_engine/src/bytecompiler/statement/mod.rs @@ -90,11 +90,8 @@ impl ByteCompiler<'_, '_> { pub(crate) fn r#return(&mut self) { let actions = self.return_jump_record_actions(); - JumpRecord::new(JumpRecordKind::Return, Self::DUMMY_LABEL, actions) .perform_actions(u32::MAX, self); - - self.emit_opcode(Opcode::Return); } fn return_jump_record_actions(&self) -> Vec {