⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 280716 in webkit


Ignore:
Timestamp:
Aug 5, 2021, 6:59:40 PM (5 years ago)
Author:
commit-queue@webkit.org
Message:

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

Patch by Mikhail R. Gadelha <Mikhail R. Gadelha> 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/JavaScriptCore:

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

Location:
trunk
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/JSTests/ChangeLog

    r280570 r280716  
     12021-08-05  Mikhail R. Gadelha  <mikhail@igalia.com>
     2
     3        Assertion failure when checking array in DFG (32 bits)
     4        https://bugs.webkit.org/show_bug.cgi?id=228839
     5
     6        Reviewed by Yusuke Suzuki.
     7
     8        * stress/check-array-empty-32.js: Added.
     9        (a.b.catch.print.c):
     10        (a.b):
     11        (a.e):
     12        (a):
     13
    1142021-08-02  Yusuke Suzuki  <ysuzuki@apple.com>
    215
  • trunk/Source/JavaScriptCore/ChangeLog

    r280704 r280716  
     12021-08-05  Mikhail R. Gadelha  <mikhail@igalia.com>
     2
     3        Assertion failure when checking array in DFG (32 bits)
     4        https://bugs.webkit.org/show_bug.cgi?id=228839
     5
     6        Reviewed by Yusuke Suzuki.
     7
     8        Since empty values don't pass the cell check in 32 bits, we need to
     9        guard the SpecEmpty check to only happen in 64 bits archs
     10
     11        * dfg/DFGSpeculativeJIT.cpp:
     12        (JSC::DFG::SpeculativeJIT::checkArray):
     13
    1142021-08-05  Robin Morisset  <rmorisset@apple.com>
    215
  • trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp

    r280149 r280716  
    859859    if (arrayMode.alreadyChecked(m_jit.graph(), node, m_state.forNode(node->child1()))) {
    860860        // We can purge Empty check completely in this case of CheckArrayOrEmpty since CellUse only accepts SpecCell | SpecEmpty.
     861#if USE(JSVALUE64)
    861862        ASSERT(typeFilterFor(node->child1().useKind()) & SpecEmpty);
     863#endif
    862864        noResult(m_currentNode);
    863865        return;
Note: See TracChangeset for help on using the changeset viewer.