| Index: src/full-codegen/x64/full-codegen-x64.cc
 | 
| diff --git a/src/full-codegen/x64/full-codegen-x64.cc b/src/full-codegen/x64/full-codegen-x64.cc
 | 
| index 0d626bc2f5ce02b105dd13e05630d9ae86c46d9a..139f4ec07788bc304f2c2d932653909e8249901b 100644
 | 
| --- a/src/full-codegen/x64/full-codegen-x64.cc
 | 
| +++ b/src/full-codegen/x64/full-codegen-x64.cc
 | 
| @@ -1193,7 +1193,7 @@ void FullCodeGenerator::EmitSetHomeObject(Expression* initializer, int offset,
 | 
|            isolate()->factory()->home_object_symbol());
 | 
|    __ movp(StoreDescriptor::ValueRegister(),
 | 
|            Operand(rsp, offset * kPointerSize));
 | 
| -  if (FLAG_vector_stores) EmitLoadStoreICSlot(slot);
 | 
| +  EmitLoadStoreICSlot(slot);
 | 
|    CallStoreIC();
 | 
|  }
 | 
|  
 | 
| @@ -1207,7 +1207,7 @@ void FullCodeGenerator::EmitSetHomeObjectAccumulator(Expression* initializer,
 | 
|            isolate()->factory()->home_object_symbol());
 | 
|    __ movp(StoreDescriptor::ValueRegister(),
 | 
|            Operand(rsp, offset * kPointerSize));
 | 
| -  if (FLAG_vector_stores) EmitLoadStoreICSlot(slot);
 | 
| +  EmitLoadStoreICSlot(slot);
 | 
|    CallStoreIC();
 | 
|  }
 | 
|  
 | 
| @@ -1535,12 +1535,8 @@ void FullCodeGenerator::VisitObjectLiteral(ObjectLiteral* expr) {
 | 
|              DCHECK(StoreDescriptor::ValueRegister().is(rax));
 | 
|              __ Move(StoreDescriptor::NameRegister(), key->value());
 | 
|              __ movp(StoreDescriptor::ReceiverRegister(), Operand(rsp, 0));
 | 
| -            if (FLAG_vector_stores) {
 | 
| -              EmitLoadStoreICSlot(property->GetSlot(0));
 | 
| -              CallStoreIC();
 | 
| -            } else {
 | 
| -              CallStoreIC(key->LiteralFeedbackId());
 | 
| -            }
 | 
| +            EmitLoadStoreICSlot(property->GetSlot(0));
 | 
| +            CallStoreIC();
 | 
|              PrepareForBailoutForId(key->id(), NO_REGISTERS);
 | 
|  
 | 
|              if (NeedsHomeObject(value)) {
 | 
| @@ -1724,32 +1720,12 @@ void FullCodeGenerator::VisitArrayLiteral(ArrayLiteral* expr) {
 | 
|      }
 | 
|      VisitForAccumulatorValue(subexpr);
 | 
|  
 | 
| -    if (FLAG_vector_stores) {
 | 
| -      __ Move(StoreDescriptor::NameRegister(), Smi::FromInt(array_index));
 | 
| -      __ movp(StoreDescriptor::ReceiverRegister(), Operand(rsp, kPointerSize));
 | 
| -      EmitLoadStoreICSlot(expr->LiteralFeedbackSlot());
 | 
| -      Handle<Code> ic =
 | 
| -          CodeFactory::KeyedStoreIC(isolate(), language_mode()).code();
 | 
| -      CallIC(ic);
 | 
| -    } else if (has_constant_fast_elements) {
 | 
| -      // Fast-case array literal with ElementsKind of FAST_*_ELEMENTS, they
 | 
| -      // cannot transition and don't need to call the runtime stub.
 | 
| -      int offset = FixedArray::kHeaderSize + (array_index * kPointerSize);
 | 
| -      __ movp(rbx, Operand(rsp, kPointerSize));  // Copy of array literal.
 | 
| -      __ movp(rbx, FieldOperand(rbx, JSObject::kElementsOffset));
 | 
| -      // Store the subexpression value in the array's elements.
 | 
| -      __ movp(FieldOperand(rbx, offset), result_register());
 | 
| -      // Update the write barrier for the array store.
 | 
| -      __ RecordWriteField(rbx, offset, result_register(), rcx,
 | 
| -                          kDontSaveFPRegs,
 | 
| -                          EMIT_REMEMBERED_SET,
 | 
| -                          INLINE_SMI_CHECK);
 | 
| -    } else {
 | 
| -      // Store the subexpression value in the array's elements.
 | 
| -      __ Move(rcx, Smi::FromInt(array_index));
 | 
| -      StoreArrayLiteralElementStub stub(isolate());
 | 
| -      __ CallStub(&stub);
 | 
| -    }
 | 
| +    __ Move(StoreDescriptor::NameRegister(), Smi::FromInt(array_index));
 | 
| +    __ movp(StoreDescriptor::ReceiverRegister(), Operand(rsp, kPointerSize));
 | 
| +    EmitLoadStoreICSlot(expr->LiteralFeedbackSlot());
 | 
| +    Handle<Code> ic =
 | 
| +        CodeFactory::KeyedStoreIC(isolate(), language_mode()).code();
 | 
| +    CallIC(ic);
 | 
|  
 | 
|      PrepareForBailoutForId(expr->GetIdForElement(array_index), NO_REGISTERS);
 | 
|    }
 | 
| @@ -2407,7 +2383,7 @@ void FullCodeGenerator::EmitAssignment(Expression* expr,
 | 
|        __ Pop(StoreDescriptor::ValueRegister());  // Restore value.
 | 
|        __ Move(StoreDescriptor::NameRegister(),
 | 
|                prop->key()->AsLiteral()->value());
 | 
| -      if (FLAG_vector_stores) EmitLoadStoreICSlot(slot);
 | 
| +      EmitLoadStoreICSlot(slot);
 | 
|        CallStoreIC();
 | 
|        break;
 | 
|      }
 | 
| @@ -2455,7 +2431,7 @@ void FullCodeGenerator::EmitAssignment(Expression* expr,
 | 
|        __ Move(StoreDescriptor::NameRegister(), rax);
 | 
|        __ Pop(StoreDescriptor::ReceiverRegister());
 | 
|        __ Pop(StoreDescriptor::ValueRegister());  // Restore value.
 | 
| -      if (FLAG_vector_stores) EmitLoadStoreICSlot(slot);
 | 
| +      EmitLoadStoreICSlot(slot);
 | 
|        Handle<Code> ic =
 | 
|            CodeFactory::KeyedStoreIC(isolate(), language_mode()).code();
 | 
|        CallIC(ic);
 | 
| @@ -2483,7 +2459,7 @@ void FullCodeGenerator::EmitVariableAssignment(Variable* var, Token::Value op,
 | 
|      // Global var, const, or let.
 | 
|      __ Move(StoreDescriptor::NameRegister(), var->name());
 | 
|      __ movp(StoreDescriptor::ReceiverRegister(), GlobalObjectOperand());
 | 
| -    if (FLAG_vector_stores) EmitLoadStoreICSlot(slot);
 | 
| +    EmitLoadStoreICSlot(slot);
 | 
|      CallStoreIC();
 | 
|  
 | 
|    } else if (var->mode() == LET && op != Token::INIT) {
 | 
| @@ -2587,12 +2563,8 @@ void FullCodeGenerator::EmitNamedPropertyAssignment(Assignment* expr) {
 | 
|  
 | 
|    __ Move(StoreDescriptor::NameRegister(), prop->key()->AsLiteral()->value());
 | 
|    __ Pop(StoreDescriptor::ReceiverRegister());
 | 
| -  if (FLAG_vector_stores) {
 | 
| -    EmitLoadStoreICSlot(expr->AssignmentSlot());
 | 
| -    CallStoreIC();
 | 
| -  } else {
 | 
| -    CallStoreIC(expr->AssignmentFeedbackId());
 | 
| -  }
 | 
| +  EmitLoadStoreICSlot(expr->AssignmentSlot());
 | 
| +  CallStoreIC();
 | 
|  
 | 
|    PrepareForBailoutForId(expr->AssignmentId(), TOS_REG);
 | 
|    context()->Plug(rax);
 | 
| @@ -2636,12 +2608,8 @@ void FullCodeGenerator::EmitKeyedPropertyAssignment(Assignment* expr) {
 | 
|    DCHECK(StoreDescriptor::ValueRegister().is(rax));
 | 
|    Handle<Code> ic =
 | 
|        CodeFactory::KeyedStoreIC(isolate(), language_mode()).code();
 | 
| -  if (FLAG_vector_stores) {
 | 
| -    EmitLoadStoreICSlot(expr->AssignmentSlot());
 | 
| -    CallIC(ic);
 | 
| -  } else {
 | 
| -    CallIC(ic, expr->AssignmentFeedbackId());
 | 
| -  }
 | 
| +  EmitLoadStoreICSlot(expr->AssignmentSlot());
 | 
| +  CallIC(ic);
 | 
|  
 | 
|    PrepareForBailoutForId(expr->AssignmentId(), TOS_REG);
 | 
|    context()->Plug(rax);
 | 
| @@ -4543,12 +4511,8 @@ void FullCodeGenerator::VisitCountOperation(CountOperation* expr) {
 | 
|        __ Move(StoreDescriptor::NameRegister(),
 | 
|                prop->key()->AsLiteral()->value());
 | 
|        __ Pop(StoreDescriptor::ReceiverRegister());
 | 
| -      if (FLAG_vector_stores) {
 | 
| -        EmitLoadStoreICSlot(expr->CountSlot());
 | 
| -        CallStoreIC();
 | 
| -      } else {
 | 
| -        CallStoreIC(expr->CountStoreFeedbackId());
 | 
| -      }
 | 
| +      EmitLoadStoreICSlot(expr->CountSlot());
 | 
| +      CallStoreIC();
 | 
|        PrepareForBailoutForId(expr->AssignmentId(), TOS_REG);
 | 
|        if (expr->is_postfix()) {
 | 
|          if (!context()->IsEffect()) {
 | 
| @@ -4586,12 +4550,8 @@ void FullCodeGenerator::VisitCountOperation(CountOperation* expr) {
 | 
|        __ Pop(StoreDescriptor::ReceiverRegister());
 | 
|        Handle<Code> ic =
 | 
|            CodeFactory::KeyedStoreIC(isolate(), language_mode()).code();
 | 
| -      if (FLAG_vector_stores) {
 | 
| -        EmitLoadStoreICSlot(expr->CountSlot());
 | 
| -        CallIC(ic);
 | 
| -      } else {
 | 
| -        CallIC(ic, expr->CountStoreFeedbackId());
 | 
| -      }
 | 
| +      EmitLoadStoreICSlot(expr->CountSlot());
 | 
| +      CallIC(ic);
 | 
|        PrepareForBailoutForId(expr->AssignmentId(), TOS_REG);
 | 
|        if (expr->is_postfix()) {
 | 
|          if (!context()->IsEffect()) {
 | 
| @@ -4893,7 +4853,7 @@ void FullCodeGenerator::ClearPendingMessage() {
 | 
|  
 | 
|  
 | 
|  void FullCodeGenerator::EmitLoadStoreICSlot(FeedbackVectorSlot slot) {
 | 
| -  DCHECK(FLAG_vector_stores && !slot.IsInvalid());
 | 
| +  DCHECK(!slot.IsInvalid());
 | 
|    __ Move(VectorStoreICTrampolineDescriptor::SlotRegister(), SmiFromSlot(slot));
 | 
|  }
 | 
|  
 | 
| 
 |