Title: [232800] trunk/Source/_javascript_Core
Revision
232800
Author
sbar...@apple.com
Date
2018-06-13 12:04:10 -0700 (Wed, 13 Jun 2018)

Log Message

CFGSimplificationPhase should de-dupe jettisonedBlocks
https://bugs.webkit.org/show_bug.cgi?id=186583

Reviewed by Filip Pizlo.

When making the predecessors list unique in r232741, it revealed a bug inside
of CFG simplification, where we try to remove the same predecessor more than
once from a blocks predecessors list. We built the list of blocks to remove
from the list of successors, which is not unique, causing us to try to remove
the same predecessor more than once. The solution here is to just add to this
list of blocks to remove only if the block is not already in the list.

* dfg/DFGCFGSimplificationPhase.cpp:
(JSC::DFG::CFGSimplificationPhase::run):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (232799 => 232800)


--- trunk/Source/_javascript_Core/ChangeLog	2018-06-13 18:51:17 UTC (rev 232799)
+++ trunk/Source/_javascript_Core/ChangeLog	2018-06-13 19:04:10 UTC (rev 232800)
@@ -1,3 +1,20 @@
+2018-06-13  Saam Barati  <sbar...@apple.com>
+
+        CFGSimplificationPhase should de-dupe jettisonedBlocks
+        https://bugs.webkit.org/show_bug.cgi?id=186583
+
+        Reviewed by Filip Pizlo.
+
+        When making the predecessors list unique in r232741, it revealed a bug inside
+        of CFG simplification, where we try to remove the same predecessor more than
+        once from a blocks predecessors list. We built the list of blocks to remove
+        from the list of successors, which is not unique, causing us to try to remove
+        the same predecessor more than once. The solution here is to just add to this
+        list of blocks to remove only if the block is not already in the list.
+
+        * dfg/DFGCFGSimplificationPhase.cpp:
+        (JSC::DFG::CFGSimplificationPhase::run):
+
 2018-06-13  Yusuke Suzuki  <utatane....@gmail.com>
 
         [JSC] Always use Nuke & Set procedure for x86

Modified: trunk/Source/_javascript_Core/dfg/DFGCFGSimplificationPhase.cpp (232799 => 232800)


--- trunk/Source/_javascript_Core/dfg/DFGCFGSimplificationPhase.cpp	2018-06-13 18:51:17 UTC (rev 232799)
+++ trunk/Source/_javascript_Core/dfg/DFGCFGSimplificationPhase.cpp	2018-06-13 19:04:10 UTC (rev 232800)
@@ -182,7 +182,7 @@
                         
                         Vector<BasicBlock*, 1> jettisonedBlocks;
                         for (BasicBlock* successor : terminal->successors()) {
-                            if (successor != targetBlock)
+                            if (successor != targetBlock && !jettisonedBlocks.contains(successor))
                                 jettisonedBlocks.append(successor);
                         }
                         
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to