Title: [210186] releases/WebKitGTK/webkit-2.14
Revision
210186
Author
[email protected]
Date
2016-12-28 01:14:46 -0800 (Wed, 28 Dec 2016)

Log Message

Merge r206472 - B3::lowerMacros forgets to before->updatePredecessorsAfter() when lowering ChillMod on ARM64
https://bugs.webkit.org/show_bug.cgi?id=162644

Reviewed by Keith Miller.

JSTests:

* stress/chill-mod-chill-mod.js: Added.
(foo):

Source/_javascript_Core:

If you forget to update the predecessors of your successors, then bad things will happen if you
do something that requires accurate predecessors for correctness. lowerMacros() uses
BlockInsertionSet, which relies on accurate predecessors.

* b3/B3LowerMacros.cpp:

Modified Paths

Added Paths

Diff

Modified: releases/WebKitGTK/webkit-2.14/JSTests/ChangeLog (210185 => 210186)


--- releases/WebKitGTK/webkit-2.14/JSTests/ChangeLog	2016-12-28 09:11:02 UTC (rev 210185)
+++ releases/WebKitGTK/webkit-2.14/JSTests/ChangeLog	2016-12-28 09:14:46 UTC (rev 210186)
@@ -1,3 +1,13 @@
+2016-09-27  Filip Pizlo  <[email protected]>
+
+        B3::lowerMacros forgets to before->updatePredecessorsAfter() when lowering ChillMod on ARM64
+        https://bugs.webkit.org/show_bug.cgi?id=162644
+
+        Reviewed by Keith Miller.
+
+        * stress/chill-mod-chill-mod.js: Added.
+        (foo):
+
 2016-09-08  Saam Barati  <[email protected]>
 
         We should inline operationConvertJSValueToBoolean into JIT code

Added: releases/WebKitGTK/webkit-2.14/JSTests/stress/chill-mod-chill-mod.js (0 => 210186)


--- releases/WebKitGTK/webkit-2.14/JSTests/stress/chill-mod-chill-mod.js	                        (rev 0)
+++ releases/WebKitGTK/webkit-2.14/JSTests/stress/chill-mod-chill-mod.js	2016-12-28 09:14:46 UTC (rev 210186)
@@ -0,0 +1,10 @@
+function foo(a, b)
+{
+    return (~~(a % b)) + (~~(b % a));
+}
+
+noInline(foo);
+
+for (var i = 0; i < 10000; ++i)
+    foo(1, 2);
+

Modified: releases/WebKitGTK/webkit-2.14/Source/_javascript_Core/ChangeLog (210185 => 210186)


--- releases/WebKitGTK/webkit-2.14/Source/_javascript_Core/ChangeLog	2016-12-28 09:11:02 UTC (rev 210185)
+++ releases/WebKitGTK/webkit-2.14/Source/_javascript_Core/ChangeLog	2016-12-28 09:14:46 UTC (rev 210186)
@@ -1,3 +1,16 @@
+2016-09-27  Filip Pizlo  <[email protected]>
+
+        B3::lowerMacros forgets to before->updatePredecessorsAfter() when lowering ChillMod on ARM64
+        https://bugs.webkit.org/show_bug.cgi?id=162644
+
+        Reviewed by Keith Miller.
+
+        If you forget to update the predecessors of your successors, then bad things will happen if you
+        do something that requires accurate predecessors for correctness. lowerMacros() uses
+        BlockInsertionSet, which relies on accurate predecessors.
+
+        * b3/B3LowerMacros.cpp:
+
 2016-09-13  Mark Lam  <[email protected]>
 
         DFG NewArrayBuffer node should watch for "have a bad time" state change.

Modified: releases/WebKitGTK/webkit-2.14/Source/_javascript_Core/b3/B3LowerMacros.cpp (210185 => 210186)


--- releases/WebKitGTK/webkit-2.14/Source/_javascript_Core/b3/B3LowerMacros.cpp	2016-12-28 09:11:02 UTC (rev 210185)
+++ releases/WebKitGTK/webkit-2.14/Source/_javascript_Core/b3/B3LowerMacros.cpp	2016-12-28 09:14:46 UTC (rev 210186)
@@ -147,6 +147,7 @@
                     normalResult->setPhi(phi);
                     zeroResult->setPhi(phi);
                     m_value->replaceWithIdentity(phi);
+                    before->updatePredecessorsAfter();
                     m_changed = true;
                 } else
                     makeDivisionChill(Mod);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to