Changeset 260346 in webkit


Ignore:
Timestamp:
Apr 19, 2020 6:56:24 PM (4 years ago)
Author:
ysuzuki@apple.com
Message:

[JSC] SlowPathCall is not supported by callOperation in Windows
https://bugs.webkit.org/show_bug.cgi?id=210727

Reviewed by Ross Kirsling.

In Windows, SlowPathCall should be handled by JITSlowPathCall, otherwise, stack is not correctly allocated.

  • jit/JITCall.cpp:

(JSC::JIT::emit_op_iterator_open):
(JSC::JIT::emit_op_iterator_next):

  • jit/SlowPathCall.h:

(JSC::JITSlowPathCall::call):

Location:
trunk/Source/JavaScriptCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r260345 r260346  
     12020-04-19  Yusuke Suzuki  <ysuzuki@apple.com>
     2
     3        [JSC] SlowPathCall is not supported by callOperation in Windows
     4        https://bugs.webkit.org/show_bug.cgi?id=210727
     5
     6        Reviewed by Ross Kirsling.
     7
     8        In Windows, SlowPathCall should be handled by JITSlowPathCall, otherwise, stack is not correctly allocated.
     9
     10        * jit/JITCall.cpp:
     11        (JSC::JIT::emit_op_iterator_open):
     12        (JSC::JIT::emit_op_iterator_next):
     13        * jit/SlowPathCall.h:
     14        (JSC::JITSlowPathCall::call):
     15
    1162020-04-19  Yusuke Suzuki  <ysuzuki@apple.com>
    217
  • trunk/Source/JavaScriptCore/jit/JITCall.cpp

    r260344 r260346  
    394394        }
    395395    })();
    396     setupArguments<decltype(tryFastFunction)>(instruction);
    397     appendCallWithExceptionCheck(tryFastFunction);
     396
     397    JITSlowPathCall slowPathCall(this, instruction, tryFastFunction);
     398    slowPathCall.call();
    398399    Jump fastCase = branch32(NotEqual, GPRInfo::returnValueGPR2, TrustedImm32(static_cast<uint32_t>(IterationMode::Generic)));
    399400
     
    455456    emitGetVirtualRegister(bytecode.m_next, regT0);
    456457    Jump genericCase = branchIfNotEmpty(regT0);
    457     setupArguments<decltype(tryFastFunction)>(instruction);
    458     appendCallWithExceptionCheck(tryFastFunction);
     458
     459    JITSlowPathCall slowPathCall(this, instruction, tryFastFunction);
     460    slowPathCall.call();
    459461    Jump fastCase = branch32(NotEqual, GPRInfo::returnValueGPR2, TrustedImm32(static_cast<uint32_t>(IterationMode::Generic)));
    460462
  • trunk/Source/JavaScriptCore/jit/SlowPathCall.h

    r251468 r260346  
    6565        m_jit->pop(JIT::regT0); // vPC
    6666        m_jit->pop(JIT::regT1); // callFrame register
     67        static_assert(JIT::regT0 == GPRInfo::returnValueGPR);
     68        static_assert(JIT::regT1 == GPRInfo::returnValueGPR2);
    6769#endif
    6870
Note: See TracChangeset for help on using the changeset viewer.