Title: [231009] trunk
Revision
231009
Author
ross.kirsl...@sony.com
Date
2018-04-25 12:35:00 -0700 (Wed, 25 Apr 2018)

Log Message

[WinCairo] Fix js/regexp-unicode.html crash.
https://bugs.webkit.org/show_bug.cgi?id=184891

Reviewed by Yusuke Suzuki.

Source/_javascript_Core:

On Win64, register RDI is "considered nonvolatile and must be saved and restored by a function that uses [it]".
RDI is being used as a scratch register for JIT_UNICODE_EXPRESSIONS, not just YARR_JIT_ALL_PARENS_EXPRESSIONS.

* yarr/YarrJIT.cpp:
(JSC::Yarr::YarrGenerator::generateEnter):
(JSC::Yarr::YarrGenerator::generateReturn):
Unconditionally save and restore RDI on 64-bit Windows.

LayoutTests:

* platform/wincairo/TestExpectations:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (231008 => 231009)


--- trunk/LayoutTests/ChangeLog	2018-04-25 19:16:00 UTC (rev 231008)
+++ trunk/LayoutTests/ChangeLog	2018-04-25 19:35:00 UTC (rev 231009)
@@ -1,3 +1,12 @@
+2018-04-25  Ross Kirsling  <ross.kirsl...@sony.com>
+
+        [WinCairo] Fix js/regexp-unicode.html crash.
+        https://bugs.webkit.org/show_bug.cgi?id=184891
+
+        Reviewed by Yusuke Suzuki.
+
+        * platform/wincairo/TestExpectations:
+
 2018-04-25  Brent Fulgham  <bfulg...@apple.com>
 
         Don't Block First Party Cookies on Redirects

Modified: trunk/LayoutTests/platform/wincairo/TestExpectations (231008 => 231009)


--- trunk/LayoutTests/platform/wincairo/TestExpectations	2018-04-25 19:16:00 UTC (rev 231008)
+++ trunk/LayoutTests/platform/wincairo/TestExpectations	2018-04-25 19:35:00 UTC (rev 231009)
@@ -1525,7 +1525,6 @@
 imported/mozilla [ Skip ]
 imported/w3c [ Skip ]
 inspector [ Skip ]
-js/regexp-unicode.html [ Skip ]
 js/dom [ Skip ]
 legacy-animation-engine/media [ Skip ]
 legacy-animation-engine/transitions [ Skip ]

Modified: trunk/Source/_javascript_Core/ChangeLog (231008 => 231009)


--- trunk/Source/_javascript_Core/ChangeLog	2018-04-25 19:16:00 UTC (rev 231008)
+++ trunk/Source/_javascript_Core/ChangeLog	2018-04-25 19:35:00 UTC (rev 231009)
@@ -1,3 +1,18 @@
+2018-04-25  Ross Kirsling  <ross.kirsl...@sony.com>
+
+        [WinCairo] Fix js/regexp-unicode.html crash.
+        https://bugs.webkit.org/show_bug.cgi?id=184891
+
+        Reviewed by Yusuke Suzuki.
+
+        On Win64, register RDI is "considered nonvolatile and must be saved and restored by a function that uses [it]".
+        RDI is being used as a scratch register for JIT_UNICODE_EXPRESSIONS, not just YARR_JIT_ALL_PARENS_EXPRESSIONS.
+
+        * yarr/YarrJIT.cpp:
+        (JSC::Yarr::YarrGenerator::generateEnter):
+        (JSC::Yarr::YarrGenerator::generateReturn):
+        Unconditionally save and restore RDI on 64-bit Windows.
+
 2018-04-25  Michael Catanzaro  <mcatanz...@igalia.com>
 
         [GTK] Miscellaneous build cleanups

Modified: trunk/Source/_javascript_Core/yarr/YarrJIT.cpp (231008 => 231009)


--- trunk/Source/_javascript_Core/yarr/YarrJIT.cpp	2018-04-25 19:16:00 UTC (rev 231008)
+++ trunk/Source/_javascript_Core/yarr/YarrJIT.cpp	2018-04-25 19:35:00 UTC (rev 231009)
@@ -3299,10 +3299,12 @@
         if (m_pattern.m_saveInitialStartValue)
             push(X86Registers::ebx);
 
+#if OS(WINDOWS)
+        push(X86Registers::edi);
+#endif
 #if ENABLE(YARR_JIT_ALL_PARENS_EXPRESSIONS)
         if (m_containsNestedSubpatterns) {
 #if OS(WINDOWS)
-            push(X86Registers::edi);
             push(X86Registers::esi);
 #endif
             push(X86Registers::r12);
@@ -3392,10 +3394,12 @@
             pop(X86Registers::r12);
 #if OS(WINDOWS)
             pop(X86Registers::esi);
-            pop(X86Registers::edi);
 #endif
         }
 #endif
+#if OS(WINDOWS)
+        pop(X86Registers::edi);
+#endif
 
         if (m_pattern.m_saveInitialStartValue)
             pop(X86Registers::ebx);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to