Ignore:
Timestamp:
Jan 19, 2022, 8:03:12 PM (3 years ago)
Author:
[email protected]
Message:

[JSC] Fix non-JIT Windows LLInt
https://bugs.webkit.org/show_bug.cgi?id=235388

Reviewed by Mark Lam.

We should implement cCall3 which calls llint_link_call etc. from LLInt code.
This implementation needs to work on Windows too, so it requires stack modification.
While we do not have a problem on JIT Windows build, it is required for non JIT Windows
build. (If JIT is enabled, LLInt is fine. But if JIT is entirely disabled, this change
is required.)

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::llint_link_call):
(JSC::LLInt::llint_virtual_call):

  • llint/LLIntSlowPaths.h:
  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • offlineasm/cloop.rb:
  • offlineasm/instructions.rb:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/offlineasm/cloop.rb

    r285795 r288268  
    571571    $asm.putc "cloopStack.setCurrentStackPointer(sp.vp());"
    572572    $asm.putc "#{operands[0].cLabel}(#{operands[1].clDump}, #{operands[2].clDump});"
     573end
     574
     575def cloopEmitCallSlowPath3(operands)
     576    $asm.putc "{"
     577    $asm.putc "    cloopStack.setCurrentStackPointer(sp.vp());"
     578    $asm.putc "    SlowPathReturnType result = #{operands[0].cLabel}(#{operands[1].clDump}, #{operands[2].clDump}, #{operands[3].clDump});"
     579    $asm.putc "    decodeResult(result, t0, t1);"
     580    $asm.putc "}"
    573581end
    574582
     
    11841192            cloopEmitCallSlowPathVoid(operands)
    11851193
     1194        when "cloopCallSlowPath3"
     1195            cloopEmitCallSlowPath3(operands)
     1196
    11861197        when "cloopCallSlowPath4"
    11871198            cloopEmitCallSlowPath4(operands)
Note: See TracChangeset for help on using the changeset viewer.