Changeset 225834 in webkit


Ignore:
Timestamp:
Dec 12, 2017 7:04:22 PM (6 years ago)
Author:
sbarati@apple.com
Message:

We need to model effects of Spread(@PhantomCreateRest) in Clobberize/PreciseLocalClobberize
https://bugs.webkit.org/show_bug.cgi?id=180725
<rdar://problem/35970511>

Reviewed by Michael Saboff.

JSTests:

  • stress/model-effects-properly-of-spread-over-phantom-create-rest.js: Added.

(f1):
(f2):
(let.o2.valueOf):

Source/JavaScriptCore:

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGPreciseLocalClobberize.h:

(JSC::DFG::PreciseLocalClobberizeAdaptor::readTop):

Location:
trunk
Files:
1 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/JSTests/ChangeLog

    r225832 r225834  
     12017-12-12  Saam Barati  <sbarati@apple.com>
     2
     3        We need to model effects of Spread(@PhantomCreateRest) in Clobberize/PreciseLocalClobberize
     4        https://bugs.webkit.org/show_bug.cgi?id=180725
     5        <rdar://problem/35970511>
     6
     7        Reviewed by Michael Saboff.
     8
     9        * stress/model-effects-properly-of-spread-over-phantom-create-rest.js: Added.
     10        (f1):
     11        (f2):
     12        (let.o2.valueOf):
     13
    1142017-12-12  Yusuke Suzuki  <utatane.tea@gmail.com>
    215
  • trunk/Source/JavaScriptCore/ChangeLog

    r225832 r225834  
     12017-12-12  Saam Barati  <sbarati@apple.com>
     2
     3        We need to model effects of Spread(@PhantomCreateRest) in Clobberize/PreciseLocalClobberize
     4        https://bugs.webkit.org/show_bug.cgi?id=180725
     5        <rdar://problem/35970511>
     6
     7        Reviewed by Michael Saboff.
     8
     9        * dfg/DFGClobberize.h:
     10        (JSC::DFG::clobberize):
     11        * dfg/DFGPreciseLocalClobberize.h:
     12        (JSC::DFG::PreciseLocalClobberizeAdaptor::readTop):
     13
    1142017-12-12  Yusuke Suzuki  <utatane.tea@gmail.com>
    215
  • trunk/Source/JavaScriptCore/dfg/DFGClobberize.h

    r225832 r225834  
    13131313
    13141314    case Spread: {
     1315        if (node->child1()->op() == PhantomCreateRest)
     1316            read(Stack);
     1317
    13151318        if (node->child1().useKind() == ArrayUse) {
    13161319            // FIXME: We can probably CSE these together, but we need to construct the right rules
  • trunk/Source/JavaScriptCore/dfg/DFGPreciseLocalClobberize.h

    r221528 r225834  
    121121        };
    122122
    123         auto readPhantomSpreadNode = [&] (Node* spread) {
    124             ASSERT(spread->op() == PhantomSpread);
     123        auto readSpreadOfPhantomCreateRest = [&] (Node* spread) {
     124            ASSERT(spread->op() == Spread || spread->op() == PhantomSpread);
    125125            ASSERT(spread->child1()->op() == PhantomCreateRest);
    126126            InlineCallFrame* inlineCallFrame = spread->child1()->origin.semantic.inlineCallFrame;
     
    136136                    Node* child = m_graph.varArgChild(arrayWithSpread, i).node();
    137137                    if (child->op() == PhantomSpread)
    138                         readPhantomSpreadNode(child);
     138                        readSpreadOfPhantomCreateRest(child);
    139139                }
    140140            }
     
    182182                    readNewArrayWithSpreadNode(m_node->argumentsChild().node());
    183183                else
    184                     readPhantomSpreadNode(m_node->argumentsChild().node());
     184                    readSpreadOfPhantomCreateRest(m_node->argumentsChild().node());
    185185            } else {
    186186                InlineCallFrame* inlineCallFrame;
     
    203203            break;
    204204        }
     205       
     206        case Spread:
     207            if (m_node->child1()->op() == PhantomCreateRest)
     208                readSpreadOfPhantomCreateRest(m_node);
     209            break;
    205210       
    206211        case NewArrayWithSpread: {
Note: See TracChangeset for help on using the changeset viewer.