| Index: src/crankshaft/hydrogen.cc
 | 
| diff --git a/src/crankshaft/hydrogen.cc b/src/crankshaft/hydrogen.cc
 | 
| index 107021cecba8d728c7f2dcd9a422a70cf250c105..f467d67dfd20a456bb9981b4f0893baf574faffe 100644
 | 
| --- a/src/crankshaft/hydrogen.cc
 | 
| +++ b/src/crankshaft/hydrogen.cc
 | 
| @@ -7198,26 +7198,28 @@ HInstruction* HOptimizedGraphBuilder::BuildNamedGeneric(
 | 
|      Handle<TypeFeedbackVector> vector =
 | 
|          handle(current_feedback_vector(), isolate());
 | 
|  
 | 
| +    HValue* key = Add<HConstant>(name);
 | 
| +    HValue* vector_value = Add<HConstant>(vector);
 | 
| +    HValue* slot_value = Add<HConstant>(vector->GetIndex(slot));
 | 
| +    HValue* values[] = {context(), object,     key,
 | 
| +                        value,     slot_value, vector_value};
 | 
| +
 | 
|      if (current_feedback_vector()->GetKind(slot) ==
 | 
|          FeedbackVectorSlotKind::KEYED_STORE_IC) {
 | 
|        // It's possible that a keyed store of a constant string was converted
 | 
|        // to a named store. Here, at the last minute, we need to make sure to
 | 
|        // use a generic Keyed Store if we are using the type vector, because
 | 
|        // it has to share information with full code.
 | 
| -      HConstant* key = Add<HConstant>(name);
 | 
| -      HStoreKeyedGeneric* result = New<HStoreKeyedGeneric>(
 | 
| -          object, key, value, function_language_mode(), vector, slot);
 | 
| +      Callable callable = CodeFactory::KeyedStoreICInOptimizedCode(
 | 
| +          isolate(), function_language_mode());
 | 
| +      HValue* stub = Add<HConstant>(callable.code());
 | 
| +      HCallWithDescriptor* result = New<HCallWithDescriptor>(
 | 
| +          stub, 0, callable.descriptor(), ArrayVector(values));
 | 
|        return result;
 | 
|      }
 | 
| -
 | 
| -    HValue* name_value = Add<HConstant>(name);
 | 
| -    HValue* vector_value = Add<HConstant>(vector);
 | 
| -    HValue* slot_value = Add<HConstant>(vector->GetIndex(slot));
 | 
|      Callable callable = CodeFactory::StoreICInOptimizedCode(
 | 
|          isolate(), function_language_mode());
 | 
|      HValue* stub = Add<HConstant>(callable.code());
 | 
| -    HValue* values[] = {context(), object,     name_value,
 | 
| -                        value,     slot_value, vector_value};
 | 
|      HCallWithDescriptor* result = New<HCallWithDescriptor>(
 | 
|          stub, 0, callable.descriptor(), ArrayVector(values));
 | 
|      return result;
 | 
| @@ -7235,8 +7237,16 @@ HInstruction* HOptimizedGraphBuilder::BuildKeyedGeneric(
 | 
|          New<HLoadKeyedGeneric>(object, key, vector, slot);
 | 
|      return result;
 | 
|    } else {
 | 
| -    HStoreKeyedGeneric* result = New<HStoreKeyedGeneric>(
 | 
| -        object, key, value, function_language_mode(), vector, slot);
 | 
| +    HValue* vector_value = Add<HConstant>(vector);
 | 
| +    HValue* slot_value = Add<HConstant>(vector->GetIndex(slot));
 | 
| +    HValue* values[] = {context(), object,     key,
 | 
| +                        value,     slot_value, vector_value};
 | 
| +
 | 
| +    Callable callable = CodeFactory::KeyedStoreICInOptimizedCode(
 | 
| +        isolate(), function_language_mode());
 | 
| +    HValue* stub = Add<HConstant>(callable.code());
 | 
| +    HCallWithDescriptor* result = New<HCallWithDescriptor>(
 | 
| +        stub, 0, callable.descriptor(), ArrayVector(values));
 | 
|      return result;
 | 
|    }
 | 
|  }
 | 
| 
 |