Changeset 181498 in webkit
- Timestamp:
- Mar 14, 2015 10:45:43 AM (9 years ago)
- Location:
- trunk/Source/JavaScriptCore
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r181497 r181498 1 2015-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 1 16 2015-03-14 Michael Saboff <msaboff@apple.com> 2 17 -
trunk/Source/JavaScriptCore/dfg/DFGPutStackSinkingPhase.cpp
r181487 r181498 222 222 } 223 223 224 if (node->op() == GetStack) {225 // A GetStack doesn't affect anything, since we know which local we are reading226 // from.227 continue;228 }229 230 224 auto escapeHandler = [&] (VirtualRegister operand) { 231 225 if (operand.isHeader()) … … 397 391 break; 398 392 } 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 most405 // 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. It411 // would have stored a value with a certain format. That format must match our412 // format. But more importantly, we can simply use the value that the PutStack would413 // 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 }421 393 422 394 default: { … … 447 419 m_graph, node, escapeHandler, escapeHandler, 448 420 [&] (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 } 449 431 break; 450 432 } }
Note: See TracChangeset
for help on using the changeset viewer.