[webkit-changes] [WebKit/WebKit] d89d75: Fix checkSwitchToJITForLoop on ARM64E to work with...

Commit Queue noreply at github.com
Tue Jul 4 16:33:49 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: d89d75b2f6652903ab22bd92e4d3e763c42c1ae2
      https://github.com/WebKit/WebKit/commit/d89d75b2f6652903ab22bd92e4d3e763c42c1ae2
  Author: Mark Lam <mark.lam at apple.com>
  Date:   2023-07-04 (Tue, 04 Jul 2023)

  Changed paths:
    M Source/JavaScriptCore/bytecode/BytecodeList.rb
    M Source/JavaScriptCore/llint/LLIntData.cpp
    M Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm
    M Source/JavaScriptCore/llint/LowLevelInterpreter64.asm

  Log Message:
  -----------
  Fix checkSwitchToJITForLoop on ARM64E to work with --returnEarlyFromInfiniteLoopsForFuzzing=1 --useJIT=0.
https://bugs.webkit.org/show_bug.cgi?id=258845
rdar://111722535

Reviewed by Justin Michaud.

On ARM64E, checkSwitchToJITForLoop() assumes that we can always dispatch thru
g_jscConfig.llint.gateMap[Gate::loopOSREntry], which is normally a JIT thunk.
However, this entry is null when --useJIT=0.  Fix this by implementing a LLInt
only thunk that achieves the same thing.

This fixes the JSTests/stress/codeblock-destructor-access-unlinkedcodeblock.js
test on ARM64E when running with --useJIT=0.

* Source/JavaScriptCore/bytecode/BytecodeList.rb:
* Source/JavaScriptCore/llint/LLIntData.cpp:
(JSC::LLInt::initialize):
* Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm:
* Source/JavaScriptCore/llint/LowLevelInterpreter64.asm:

Canonical link: https://commits.webkit.org/265760@main




More information about the webkit-changes mailing list