From 87baf140f2638a759b9fd85641426a2277dbaea5 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sat, 28 Oct 2023 14:38:59 +0200 Subject: [PATCH] LibJS/JIT: Use PUSH imm when pushing null unwind context pointer(s) Small code size optimization, saves 252 bytes on Kraken/ai-astar.js :^) --- Userland/Libraries/LibJS/JIT/Compiler.cpp | 34 +++++++++++++---------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/Userland/Libraries/LibJS/JIT/Compiler.cpp b/Userland/Libraries/LibJS/JIT/Compiler.cpp index 934b078f1b..02bc1d27ff 100644 --- a/Userland/Libraries/LibJS/JIT/Compiler.cpp +++ b/Userland/Libraries/LibJS/JIT/Compiler.cpp @@ -396,23 +396,29 @@ void Compiler::push_unwind_context(bool valid, Optional const& // u64 finalizer; // }; - // push finalizer (patched later) - m_assembler.mov( - Assembler::Operand::Register(GPR0), - Assembler::Operand::Imm(0), - Assembler::Patchable::Yes); - if (finalizer.has_value()) + if (finalizer.has_value()) { + // push finalizer (patched later) + m_assembler.mov( + Assembler::Operand::Register(GPR0), + Assembler::Operand::Imm(0), + Assembler::Patchable::Yes); block_data_for(finalizer.value().block()).absolute_references_to_here.append(m_assembler.m_output.size() - 8); - m_assembler.push(Assembler::Operand::Register(GPR0)); + m_assembler.push(Assembler::Operand::Register(GPR0)); + } else { + m_assembler.push(Assembler::Operand::Imm(0)); + } - // push handler (patched later) - m_assembler.mov( - Assembler::Operand::Register(GPR0), - Assembler::Operand::Imm(0), - Assembler::Patchable::Yes); - if (handler.has_value()) + if (handler.has_value()) { + // push handler (patched later) + m_assembler.mov( + Assembler::Operand::Register(GPR0), + Assembler::Operand::Imm(0), + Assembler::Patchable::Yes); block_data_for(handler.value().block()).absolute_references_to_here.append(m_assembler.m_output.size() - 8); - m_assembler.push(Assembler::Operand::Register(GPR0)); + m_assembler.push(Assembler::Operand::Register(GPR0)); + } else { + m_assembler.push(Assembler::Operand::Imm(0)); + } // push valid m_assembler.push(Assembler::Operand::Imm(valid));