Title: [280716] trunk
Revision
280716
Author
[email protected]
Date
2021-08-05 18:59:40 -0700 (Thu, 05 Aug 2021)

Log Message

Assertion failure when checking array in DFG (32 bits)
https://bugs.webkit.org/show_bug.cgi?id=228839

Patch by Mikhail R. Gadelha <[email protected]> on 2021-08-05
Reviewed by Yusuke Suzuki.

JSTests:

* stress/check-array-empty-32.js: Added.
(a.b.catch.print.c):
(a.b):
(a.e):
(a):

Source/_javascript_Core:

Since empty values don't pass the cell check in 32 bits, we need to
guard the SpecEmpty check to only happen in 64 bits archs

* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::checkArray):

Modified Paths

Added Paths

Diff

Modified: trunk/JSTests/ChangeLog (280715 => 280716)


--- trunk/JSTests/ChangeLog	2021-08-06 01:56:58 UTC (rev 280715)
+++ trunk/JSTests/ChangeLog	2021-08-06 01:59:40 UTC (rev 280716)
@@ -1,3 +1,16 @@
+2021-08-05  Mikhail R. Gadelha  <[email protected]>
+
+        Assertion failure when checking array in DFG (32 bits)
+        https://bugs.webkit.org/show_bug.cgi?id=228839
+
+        Reviewed by Yusuke Suzuki.
+
+        * stress/check-array-empty-32.js: Added.
+        (a.b.catch.print.c):
+        (a.b):
+        (a.e):
+        (a):
+
 2021-08-02  Yusuke Suzuki  <[email protected]>
 
         [JSC] Yarr BoyerMoore search should support character-class

Added: trunk/JSTests/stress/check-array-empty-32.js (0 => 280716)


--- trunk/JSTests/stress/check-array-empty-32.js	                        (rev 0)
+++ trunk/JSTests/stress/check-array-empty-32.js	2021-08-06 01:59:40 UTC (rev 280716)
@@ -0,0 +1,15 @@
+function __f_0() { return arguments }
+
+function __f_1(__v_4) {
+  var __v_6
+  if(__v_4)
+    __v_6 = __f_0()
+
+  {}
+
+  __v_6[2]
+}
+
+for (i = 0; i < 100; ++i) {
+  __f_1(1)
+}

Modified: trunk/Source/_javascript_Core/ChangeLog (280715 => 280716)


--- trunk/Source/_javascript_Core/ChangeLog	2021-08-06 01:56:58 UTC (rev 280715)
+++ trunk/Source/_javascript_Core/ChangeLog	2021-08-06 01:59:40 UTC (rev 280716)
@@ -1,3 +1,16 @@
+2021-08-05  Mikhail R. Gadelha  <[email protected]>
+
+        Assertion failure when checking array in DFG (32 bits)
+        https://bugs.webkit.org/show_bug.cgi?id=228839
+
+        Reviewed by Yusuke Suzuki.
+
+        Since empty values don't pass the cell check in 32 bits, we need to
+        guard the SpecEmpty check to only happen in 64 bits archs
+
+        * dfg/DFGSpeculativeJIT.cpp:
+        (JSC::DFG::SpeculativeJIT::checkArray):
+
 2021-08-05  Robin Morisset  <[email protected]>
 
         REGRESSION (r280507): ASSERTION FAILED: !undominatedPhis.contains(value) in JSC::B3::(anonymous namespace)::Validater::validatePhisAreDominatedByUpsilons()

Modified: trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT.cpp (280715 => 280716)


--- trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT.cpp	2021-08-06 01:56:58 UTC (rev 280715)
+++ trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT.cpp	2021-08-06 01:59:40 UTC (rev 280716)
@@ -858,7 +858,9 @@
     
     if (arrayMode.alreadyChecked(m_jit.graph(), node, m_state.forNode(node->child1()))) {
         // We can purge Empty check completely in this case of CheckArrayOrEmpty since CellUse only accepts SpecCell | SpecEmpty.
+#if USE(JSVALUE64)
         ASSERT(typeFilterFor(node->child1().useKind()) & SpecEmpty);
+#endif
         noResult(m_currentNode);
         return;
     }
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to