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

Reply via email to