Title: [260346] trunk/Source/_javascript_Core
Revision
260346
Author
[email protected]
Date
2020-04-19 18:56:24 -0700 (Sun, 19 Apr 2020)

Log 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):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (260345 => 260346)


--- trunk/Source/_javascript_Core/ChangeLog	2020-04-20 00:59:00 UTC (rev 260345)
+++ trunk/Source/_javascript_Core/ChangeLog	2020-04-20 01:56:24 UTC (rev 260346)
@@ -1,5 +1,20 @@
 2020-04-19  Yusuke Suzuki  <[email protected]>
 
+        [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):
+
+2020-04-19  Yusuke Suzuki  <[email protected]>
+
         [JSC] Enable BigInt
         https://bugs.webkit.org/show_bug.cgi?id=210726
 

Modified: trunk/Source/_javascript_Core/jit/JITCall.cpp (260345 => 260346)


--- trunk/Source/_javascript_Core/jit/JITCall.cpp	2020-04-20 00:59:00 UTC (rev 260345)
+++ trunk/Source/_javascript_Core/jit/JITCall.cpp	2020-04-20 01:56:24 UTC (rev 260346)
@@ -393,8 +393,9 @@
         default: RELEASE_ASSERT_NOT_REACHED();
         }
     })();
-    setupArguments<decltype(tryFastFunction)>(instruction);
-    appendCallWithExceptionCheck(tryFastFunction);
+
+    JITSlowPathCall slowPathCall(this, instruction, tryFastFunction);
+    slowPathCall.call();
     Jump fastCase = branch32(NotEqual, GPRInfo::returnValueGPR2, TrustedImm32(static_cast<uint32_t>(IterationMode::Generic)));
 
     compileOpCall<OpIteratorOpen>(instruction, m_callLinkInfoIndex++);
@@ -454,8 +455,9 @@
 
     emitGetVirtualRegister(bytecode.m_next, regT0);
     Jump genericCase = branchIfNotEmpty(regT0);
-    setupArguments<decltype(tryFastFunction)>(instruction);
-    appendCallWithExceptionCheck(tryFastFunction);
+
+    JITSlowPathCall slowPathCall(this, instruction, tryFastFunction);
+    slowPathCall.call();
     Jump fastCase = branch32(NotEqual, GPRInfo::returnValueGPR2, TrustedImm32(static_cast<uint32_t>(IterationMode::Generic)));
 
     genericCase.link(this);

Modified: trunk/Source/_javascript_Core/jit/SlowPathCall.h (260345 => 260346)


--- trunk/Source/_javascript_Core/jit/SlowPathCall.h	2020-04-20 00:59:00 UTC (rev 260345)
+++ trunk/Source/_javascript_Core/jit/SlowPathCall.h	2020-04-20 01:56:24 UTC (rev 260346)
@@ -64,6 +64,8 @@
 #if CPU(X86_64) && OS(WINDOWS)
         m_jit->pop(JIT::regT0); // vPC
         m_jit->pop(JIT::regT1); // callFrame register
+        static_assert(JIT::regT0 == GPRInfo::returnValueGPR);
+        static_assert(JIT::regT1 == GPRInfo::returnValueGPR2);
 #endif
 
 #if ENABLE(OPCODE_SAMPLING)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to