Ignore:
Timestamp:
Jun 2, 2020, 9:55:15 AM (5 years ago)
Author:
[email protected]
Message:

MultiDeleteByOffset should not always def
https://bugs.webkit.org/show_bug.cgi?id=212621
<rdar://problem/63824182>

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/multi-del-by-offset-doesnt-always-def-osr-entry.js: Added.

(foo):

  • stress/multi-del-by-offset-doesnt-always-def.js: Added.

(foo):
(let.p.set undefined):

Source/JavaScriptCore:

Clobberize used to claim that MultiDeleteByOffset always defd a value.
That's an incorrect modeling of MultiDeleteByOffset though, since it might
have delete misses in its variant list. This would lead us to incorrectly
CSE when we shouldn't. This patch fixes this by saying MultiDeleteByOffset
only defs when all its cases write out a value (are hits).

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGNode.cpp:

(JSC::DFG::MultiDeleteByOffsetData::allVariantsStoreEmpty const):

  • dfg/DFGNode.h:
  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileMultiDeleteByOffset):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r262424 r262425  
     12020-06-02  Saam Barati  <[email protected]>
     2
     3        MultiDeleteByOffset should not always def
     4        https://bugs.webkit.org/show_bug.cgi?id=212621
     5        <rdar://problem/63824182>
     6
     7        Reviewed by Yusuke Suzuki.
     8
     9        Clobberize used to claim that MultiDeleteByOffset always defd a value.
     10        That's an incorrect modeling of MultiDeleteByOffset though, since it might
     11        have delete misses in its variant list. This would lead us to incorrectly
     12        CSE when we shouldn't. This patch fixes this by saying MultiDeleteByOffset
     13        only defs when all its cases write out a value (are hits).
     14
     15        * dfg/DFGClobberize.h:
     16        (JSC::DFG::clobberize):
     17        * dfg/DFGNode.cpp:
     18        (JSC::DFG::MultiDeleteByOffsetData::allVariantsStoreEmpty const):
     19        * dfg/DFGNode.h:
     20        * ftl/FTLLowerDFGToB3.cpp:
     21        (JSC::FTL::DFG::LowerDFGToB3::compileMultiDeleteByOffset):
     22
    1232020-06-02  Rob Buis  <[email protected]>
    224
Note: See TracChangeset for help on using the changeset viewer.