Changeset 181498 in webkit


Ignore:
Timestamp:
Mar 14, 2015 10:45:43 AM (9 years ago)
Author:
commit-queue@webkit.org
Message:

Unreviewed, rolling out r181487.
https://bugs.webkit.org/show_bug.cgi?id=142695

Caused Speedometer/Full.html to fail (Requested by smfr on
#webkit).

Reverted changeset:

"DFG::PutStackSinkingPhase should eliminate GetStacks that
have an obviously known source"
https://bugs.webkit.org/show_bug.cgi?id=141624
http://trac.webkit.org/changeset/181487

Location:
trunk/Source/JavaScriptCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r181497 r181498  
     12015-03-14  Commit Queue  <commit-queue@webkit.org>
     2
     3        Unreviewed, rolling out r181487.
     4        https://bugs.webkit.org/show_bug.cgi?id=142695
     5
     6        Caused Speedometer/Full.html to fail (Requested by smfr on
     7        #webkit).
     8
     9        Reverted changeset:
     10
     11        "DFG::PutStackSinkingPhase should eliminate GetStacks that
     12        have an obviously known source"
     13        https://bugs.webkit.org/show_bug.cgi?id=141624
     14        http://trac.webkit.org/changeset/181487
     15
    1162015-03-14  Michael Saboff  <msaboff@apple.com>
    217
  • trunk/Source/JavaScriptCore/dfg/DFGPutStackSinkingPhase.cpp

    r181487 r181498  
    222222                    }
    223223                   
    224                     if (node->op() == GetStack) {
    225                         // A GetStack doesn't affect anything, since we know which local we are reading
    226                         // from.
    227                         continue;
    228                     }
    229                    
    230224                    auto escapeHandler = [&] (VirtualRegister operand) {
    231225                        if (operand.isHeader())
     
    397391                    break;
    398392                }
    399                    
    400                 case GetStack: {
    401                     StackAccessData* data = node->stackAccessData();
    402                     FlushFormat format = deferred.operand(data->local);
    403                     if (!isConcrete(format)) {
    404                         // This means there is no deferral. No deferral means that the most
    405                         // authoritative value for this stack slot is what is stored in the stack. So,
    406                         // keep the GetStack.
    407                         break;
    408                     }
    409                    
    410                     // We have a concrete deferral, which means a PutStack that hasn't executed yet. It
    411                     // would have stored a value with a certain format. That format must match our
    412                     // format. But more importantly, we can simply use the value that the PutStack would
    413                     // have stored and get rid of the GetStack.
    414                     DFG_ASSERT(m_graph, node, format == data->format);
    415                    
    416                     Node* incoming = mapping.operand(data->local);
    417                     node->convertToIdentity();
    418                     node->child1() = incoming->defaultEdge();
    419                     break;
    420                 }
    421393               
    422394                default: {
     
    447419                        m_graph, node, escapeHandler, escapeHandler,
    448420                        [&] (VirtualRegister, Node*) { });
     421                   
     422                    // If we're a GetStack, then we also create a mapping.
     423                    // FIXME: We should be able to just eliminate such GetLocals, when we know
     424                    // what their incoming value will be.
     425                    // https://bugs.webkit.org/show_bug.cgi?id=141624
     426                    if (node->op() == GetStack) {
     427                        StackAccessData* data = node->stackAccessData();
     428                        VirtualRegister operand = data->local;
     429                        mapping.operand(operand) = node;
     430                    }
    449431                    break;
    450432                } }
Note: See TracChangeset for help on using the changeset viewer.