Chromium Code Reviews| Index: src/compiler/ast-graph-builder.cc |
| diff --git a/src/compiler/ast-graph-builder.cc b/src/compiler/ast-graph-builder.cc |
| index f2e10ecfe5354e71c159f151c40dd48fccfb48a7..8f825fbc01515bcf8fad2d6edb783c3060e89fba 100644 |
| --- a/src/compiler/ast-graph-builder.cc |
| +++ b/src/compiler/ast-graph-builder.cc |
| @@ -1911,7 +1911,6 @@ void AstGraphBuilder::VisitArrayLiteral(ArrayLiteral* expr) { |
| Node* closure = GetFunctionClosure(); |
| // Create node to deep-copy the literal boilerplate. |
| - expr->BuildConstantElements(isolate()); |
| Node* literals_array = |
| BuildLoadObjectField(closure, JSFunction::kLiteralsOffset); |
| Node* literal_index = jsgraph()->Constant(expr->literal_index()); |
| @@ -1929,6 +1928,7 @@ void AstGraphBuilder::VisitArrayLiteral(ArrayLiteral* expr) { |
| // Create nodes to evaluate all the non-constant subexpressions and to store |
| // them into the newly cloned array. |
| + VectorSlotPair pair = CreateVectorSlotPair(expr->LiteralFeedbackSlot()); |
|
Michael Starzinger
2015/10/13 11:59:18
nit: Can we move this into the loop (ideally yo li
mvstanton
2015/10/13 12:56:10
Done.
|
| int array_index = 0; |
| for (; array_index < expr->values()->length(); array_index++) { |
| Expression* subexpr = expr->values()->at(array_index); |
| @@ -1940,11 +1940,8 @@ void AstGraphBuilder::VisitArrayLiteral(ArrayLiteral* expr) { |
| FrameStateBeforeAndAfter states(this, subexpr->id()); |
| Node* value = environment()->Pop(); |
| Node* index = jsgraph()->Constant(array_index); |
| - // TODO(turbofan): More efficient code could be generated here. Consider |
| - // that the store will be generic because we don't have a feedback vector |
| - // slot. |
| - Node* store = BuildKeyedStore(literal, index, value, VectorSlotPair(), |
| - TypeFeedbackId::None()); |
| + Node* store = |
| + BuildKeyedStore(literal, index, value, pair, TypeFeedbackId::None()); |
| states.AddToNode(store, expr->GetIdForElement(array_index), |
| OutputFrameStateCombine::Ignore()); |
| } |