diff --git a/Userland/Libraries/LibJIT/X86_64/Assembler.h b/Userland/Libraries/LibJIT/X86_64/Assembler.h index e43db2e6fd..0e049399e5 100644 --- a/Userland/Libraries/LibJIT/X86_64/Assembler.h +++ b/Userland/Libraries/LibJIT/X86_64/Assembler.h @@ -731,7 +731,7 @@ struct X86_64Assembler { } void native_call( - void* callee, + u64 callee, Vector const& preserved_registers = {}, Vector const& stack_arguments = {}) { @@ -746,14 +746,14 @@ struct X86_64Assembler { push(stack_argument); // load callee into RAX - mov(Operand::Register(Reg::RAX), Operand::Imm(bit_cast(callee))); + mov(Operand::Register(Reg::RAX), Operand::Imm(callee)); // call RAX emit8(0xff); emit_modrm_slash(2, Operand::Register(Reg::RAX)); if (!stack_arguments.is_empty() || needs_aligning) - add(Operand::Register(Reg::RSP), Operand::Imm((stack_arguments.size() + (needs_aligning ? 1 : 0)) * sizeof(void*))); + add(Operand::Register(Reg::RSP), Operand::Imm((stack_arguments.size() + (needs_aligning ? 1 : 0)) * sizeof(u64))); for (auto const& reg : preserved_registers) pop(reg); diff --git a/Userland/Libraries/LibJS/JIT/Compiler.cpp b/Userland/Libraries/LibJS/JIT/Compiler.cpp index 29743b2e0e..ad73943087 100644 --- a/Userland/Libraries/LibJS/JIT/Compiler.cpp +++ b/Userland/Libraries/LibJS/JIT/Compiler.cpp @@ -1919,7 +1919,7 @@ void Compiler::native_call(void* function_address, Vector co { // NOTE: We don't preserve caller-saved registers when making a native call. // This means that they may have changed after we return from the call. - m_assembler.native_call(function_address, { Assembler::Operand::Register(ARG0) }, stack_arguments); + m_assembler.native_call(bit_cast(function_address), { Assembler::Operand::Register(ARG0) }, stack_arguments); } OwnPtr Compiler::compile(Bytecode::Executable& bytecode_executable)