Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 06f449154f24e7747855d1c1101d97333472bf7e https://github.com/WebKit/WebKit/commit/06f449154f24e7747855d1c1101d97333472bf7e Author: Justin Michaud <jmich...@igalia.com> Date: 2025-08-07 (Thu, 07 Aug 2025)
Changed paths: M Source/JavaScriptCore/assembler/ARM64Assembler.h M Source/JavaScriptCore/assembler/ARMv7Assembler.h M Source/JavaScriptCore/assembler/AbstractMacroAssembler.h M Source/JavaScriptCore/assembler/AssemblerCommon.h M Source/JavaScriptCore/assembler/LinkBuffer.cpp M Source/JavaScriptCore/assembler/MacroAssemblerARM64.h M Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h M Source/JavaScriptCore/assembler/RISCV64Assembler.h M Source/JavaScriptCore/assembler/X86Assembler.h M Source/JavaScriptCore/jit/ExecutableAllocator.cpp M Source/JavaScriptCore/jit/ExecutableAllocator.h M Source/JavaScriptCore/runtime/OptionsList.h M Source/WTF/wtf/OptionSet.h M Source/WTF/wtf/StdLibExtras.h Log Message: ----------- Add performJITMemcpyAtomic and simplify jit copying code. https://bugs.webkit.org/show_bug.cgi?id=295737 Reviewed by Keith Miller. The eventual goal of this series of patches is to make clear, explicit and separate entrypoints into code that eventually copies to the jit region or an assembler buffer, to clearly separate patching that must be atomic and patching that does not. This is important to ensure that every place relying on atomic copying behaviour is explicitly documented, so that ARMv7 can ensure the correct alignment of these regions. To start, we carefuly thread through a new atomic flag, but we avoid changing behavior yet. The only change this patch should make is that sometimes we can avoid a buffer allocation when linking. * Source/JavaScriptCore/assembler/ARM64Assembler.h: * Source/JavaScriptCore/assembler/ARMv7Assembler.h: (JSC::ARMv7Assembler::revertJumpTo_movT3movtcmpT2): (JSC::ARMv7Assembler::revertJumpTo_movT3): (JSC::ARMv7Assembler::fillNops): (JSC::ARMv7Assembler::fillNearTailCall): (JSC::ARMv7Assembler::link): (JSC::ARMv7Assembler::linkPointer): (JSC::ARMv7Assembler::relinkCall): (JSC::ARMv7Assembler::repatchPointer): (JSC::ARMv7Assembler::replaceWithNops): (JSC::ARMv7Assembler::setInt32): (JSC::ARMv7Assembler::setUInt7ForLoad): (JSC::ARMv7Assembler::setPointer): (JSC::ARMv7Assembler::linkJumpT1): (JSC::ARMv7Assembler::linkJumpT2): (JSC::ARMv7Assembler::linkJumpT3): (JSC::ARMv7Assembler::linkJumpT4): (JSC::ARMv7Assembler::linkConditionalJumpT4): (JSC::ARMv7Assembler::linkBX): (JSC::ARMv7Assembler::linkConditionalBX): (JSC::ARMv7Assembler::linkJumpAbsolute): * Source/JavaScriptCore/assembler/AbstractMacroAssembler.h: (JSC::AbstractMacroAssembler::emitNops): * Source/JavaScriptCore/assembler/AssemblerCommon.h: (JSC::noFlush): (JSC::memcpyAtomic): (JSC::memcpyTearing): (JSC::memcpyAtomicIfPossible): (JSC::machineCodeCopy): * Source/JavaScriptCore/assembler/LinkBuffer.cpp: (JSC::LinkBuffer::copyCompactAndLinkCode): (JSC::LinkBuffer::linkCode): * Source/JavaScriptCore/assembler/MacroAssemblerARM64.h: (JSC::MacroAssemblerARM64::link): (JSC::MacroAssemblerARM64::reemitInitialMoveWithPatch): * Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h: (JSC::MacroAssemblerARMv7::link): * Source/JavaScriptCore/assembler/RISCV64Assembler.h: (JSC::RISCV64Assembler::replaceWithNops): (JSC::RISCV64Assembler::fillNops): * Source/JavaScriptCore/assembler/X86Assembler.h: (JSC::X86Assembler::replaceWithHlt): (JSC::X86Assembler::replaceWithJump): (JSC::X86Assembler::replaceWithNops): (JSC::X86Assembler::revertJumpTo_movq_i64r): (JSC::X86Assembler::revertJumpTo_movl_i32r): (JSC::X86Assembler::revertJumpTo_cmpl_ir_force32): (JSC::X86Assembler::revertJumpTo_cmpl_im_force32): (JSC::X86Assembler::fillNops): (JSC::X86Assembler::setPointer): (JSC::X86Assembler::setInt32): (JSC::X86Assembler::setInt8): * Source/JavaScriptCore/jit/ExecutableAllocator.cpp: (JSC::ExecutableMemoryHandle::~ExecutableMemoryHandle): * Source/JavaScriptCore/jit/ExecutableAllocator.h: (JSC::jitMemcpyCheckForZeros): (JSC::jitMemcpyChecks): (JSC::performJITMemcpy): * Source/JavaScriptCore/runtime/OptionsList.h: * Source/WTF/wtf/OptionSet.h: (WTF::ConstexprOptionSet::ConstexprOptionSet): (WTF::ConstexprOptionSet::operator* const): * Source/WTF/wtf/StdLibExtras.h: (WTF::isAligned): (WTF::sizeof): Canonical link: https://commits.webkit.org/298338@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes