Changeset 205380 in webkit


Ignore:
Timestamp:
Sep 2, 2016 4:13:50 PM (8 years ago)
Author:
commit-queue@webkit.org
Message:

[JSC] Remove some more useless cases from FTL Capabilities
https://bugs.webkit.org/show_bug.cgi?id=161466

Patch by Benjamin Poulain <bpoulain@apple.com> on 2016-09-02
Reviewed by Geoffrey Garen.

Some cases do not make sense:
-In: Fixup only generate CellUse.
-PutByIdXXX: same.
-GetIndexedPropertyStorage: those cases are the only ones supported

by DFG. We would have crashed in SpeculativeJIT if other modes
were generated.

  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compilePutById):
(JSC::FTL::DFG::LowerDFGToB3::compileGetIndexedPropertyStorage):
(JSC::FTL::DFG::LowerDFGToB3::compileIn):

Location:
trunk/Source/JavaScriptCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r205372 r205380  
     12016-09-02  Benjamin Poulain  <bpoulain@apple.com>
     2
     3        [JSC] Remove some more useless cases from FTL Capabilities
     4        https://bugs.webkit.org/show_bug.cgi?id=161466
     5
     6        Reviewed by Geoffrey Garen.
     7
     8        Some cases do not make sense:
     9        -In: Fixup only generate CellUse.
     10        -PutByIdXXX: same.
     11        -GetIndexedPropertyStorage: those cases are the only ones supported
     12         by DFG. We would have crashed in SpeculativeJIT if other modes
     13         were generated.
     14
     15        * ftl/FTLCapabilities.cpp:
     16        (JSC::FTL::canCompile):
     17        * ftl/FTLLowerDFGToB3.cpp:
     18        (JSC::FTL::DFG::LowerDFGToB3::compilePutById):
     19        (JSC::FTL::DFG::LowerDFGToB3::compileGetIndexedPropertyStorage):
     20        (JSC::FTL::DFG::LowerDFGToB3::compileIn):
     21
    1222016-09-02  Chris Dumez  <cdumez@apple.com>
    223
  • trunk/Source/JavaScriptCore/ftl/FTLCapabilities.cpp

    r205204 r205380  
    180180    case ThrowReferenceError:
    181181    case Unreachable:
     182    case In:
    182183    case IsJSArray:
    183184    case IsEmpty:
     
    205206    case GetDirectPname:
    206207    case GetEnumerableLength:
     208    case GetIndexedPropertyStorage:
    207209    case GetPropertyEnumerator:
    208210    case GetEnumeratorStructurePname:
     
    225227    case Switch:
    226228    case TypeOf:
     229    case PutById:
     230    case PutByIdDirect:
     231    case PutByIdFlush:
     232    case PutByIdWithThis:
    227233    case PutGetterById:
    228234    case PutSetterById:
     
    262268        // pipeline failed to optimize out an Identity.
    263269        break;
    264     case In:
    265         if (node->child2().useKind() == CellUse)
    266             break;
    267         return CannotCompile;
    268     case PutByIdDirect:
    269     case PutById:
    270     case PutByIdFlush:
    271         if (node->child1().useKind() == CellUse)
    272             break;
    273         return CannotCompile;
    274     case PutByIdWithThis:
    275         break;
    276     case GetIndexedPropertyStorage:
    277         if (node->arrayMode().type() == Array::String)
    278             break;
    279         if (isTypedView(node->arrayMode().typedArrayType()))
    280             break;
    281         return CannotCompile;
    282270    case CheckArray:
    283271        switch (node->arrayMode().type()) {
  • trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp

    r205204 r205380  
    27082708    void compilePutById()
    27092709    {
     2710        DFG_ASSERT(m_graph, m_node, m_node->child1().useKind() == CellUse);
     2711
    27102712        Node* node = m_node;
    2711        
    2712         // See above; CellUse is easier so we do only that for now.
    2713         ASSERT(node->child1().useKind() == CellUse);
    2714 
    27152713        LValue base = lowCell(node->child1());
    27162714        LValue value = lowJSValue(node->child2());
     
    28142812            return;
    28152813        }
    2816        
     2814
     2815        DFG_ASSERT(m_graph, m_node, isTypedView(m_node->arrayMode().typedArrayType()));
    28172816        setStorage(m_out.loadPtr(cell, m_heaps.JSArrayBufferView_vector));
    28182817    }
     
    65126511    void compileIn()
    65136512    {
     6513        DFG_ASSERT(m_graph, m_node, m_node->child2().useKind() == CellUse);
     6514
    65146515        Node* node = m_node;
    65156516        Edge base = node->child2();
Note: See TracChangeset for help on using the changeset viewer.