| Index: src/crankshaft/hydrogen.cc
 | 
| diff --git a/src/crankshaft/hydrogen.cc b/src/crankshaft/hydrogen.cc
 | 
| index 05d8023e2d5ac47230b251a1639d182806d12c2e..4c36662a59d6c2b1b45be30e82ad25f9d161aace 100644
 | 
| --- a/src/crankshaft/hydrogen.cc
 | 
| +++ b/src/crankshaft/hydrogen.cc
 | 
| @@ -5898,10 +5898,10 @@ void HOptimizedGraphBuilder::VisitVariableProxy(VariableProxy* expr) {
 | 
|          HValue* global_object = Add<HLoadNamedField>(
 | 
|              BuildGetNativeContext(), nullptr,
 | 
|              HObjectAccess::ForContextSlot(Context::EXTENSION_INDEX));
 | 
| +        Handle<TypeFeedbackVector> vector(current_feedback_vector(), isolate());
 | 
|          HLoadGlobalGeneric* instr = New<HLoadGlobalGeneric>(
 | 
| -            global_object, variable->name(), ast_context()->typeof_mode());
 | 
| -        instr->SetVectorAndSlot(handle(current_feedback_vector(), isolate()),
 | 
| -                                expr->VariableFeedbackSlot());
 | 
| +            global_object, variable->name(), ast_context()->typeof_mode(),
 | 
| +            vector, expr->VariableFeedbackSlot());
 | 
|          return ast_context()->ReturnInstruction(instr, expr->id());
 | 
|        }
 | 
|      }
 | 
| @@ -7086,12 +7086,11 @@ void HOptimizedGraphBuilder::HandleGlobalVariableAssignment(
 | 
|      HValue* global_object = Add<HLoadNamedField>(
 | 
|          BuildGetNativeContext(), nullptr,
 | 
|          HObjectAccess::ForContextSlot(Context::EXTENSION_INDEX));
 | 
| -    HStoreNamedGeneric* instr =
 | 
| -        Add<HStoreNamedGeneric>(global_object, var->name(), value,
 | 
| -                                function_language_mode(), PREMONOMORPHIC);
 | 
|      Handle<TypeFeedbackVector> vector =
 | 
|          handle(current_feedback_vector(), isolate());
 | 
| -    instr->SetVectorAndSlot(vector, slot);
 | 
| +    HStoreNamedGeneric* instr =
 | 
| +        Add<HStoreNamedGeneric>(global_object, var->name(), value,
 | 
| +                                function_language_mode(), vector, slot);
 | 
|      USE(instr);
 | 
|      DCHECK(instr->HasObservableSideEffects());
 | 
|      Add<HSimulate>(ast_id, REMOVABLE_SIMULATE);
 | 
| @@ -7417,16 +7416,17 @@ HInstruction* HOptimizedGraphBuilder::BuildNamedGeneric(
 | 
|        // it has to share information with full code.
 | 
|        HConstant* key = Add<HConstant>(name);
 | 
|        HLoadKeyedGeneric* result =
 | 
| -          New<HLoadKeyedGeneric>(object, key, PREMONOMORPHIC);
 | 
| -      result->SetVectorAndSlot(vector, slot);
 | 
| +          New<HLoadKeyedGeneric>(object, key, vector, slot);
 | 
|        return result;
 | 
|      }
 | 
|  
 | 
|      HLoadNamedGeneric* result =
 | 
| -        New<HLoadNamedGeneric>(object, name, PREMONOMORPHIC);
 | 
| -    result->SetVectorAndSlot(vector, slot);
 | 
| +        New<HLoadNamedGeneric>(object, name, vector, slot);
 | 
|      return result;
 | 
|    } else {
 | 
| +    Handle<TypeFeedbackVector> vector =
 | 
| +        handle(current_feedback_vector(), isolate());
 | 
| +
 | 
|      if (current_feedback_vector()->GetKind(slot) ==
 | 
|          FeedbackVectorSlotKind::KEYED_STORE_IC) {
 | 
|        // It's possible that a keyed store of a constant string was converted
 | 
| @@ -7435,18 +7435,12 @@ HInstruction* HOptimizedGraphBuilder::BuildNamedGeneric(
 | 
|        // it has to share information with full code.
 | 
|        HConstant* key = Add<HConstant>(name);
 | 
|        HStoreKeyedGeneric* result = New<HStoreKeyedGeneric>(
 | 
| -          object, key, value, function_language_mode(), PREMONOMORPHIC);
 | 
| -      Handle<TypeFeedbackVector> vector =
 | 
| -          handle(current_feedback_vector(), isolate());
 | 
| -      result->SetVectorAndSlot(vector, slot);
 | 
| +          object, key, value, function_language_mode(), vector, slot);
 | 
|        return result;
 | 
|      }
 | 
|  
 | 
|      HStoreNamedGeneric* result = New<HStoreNamedGeneric>(
 | 
| -        object, name, value, function_language_mode(), PREMONOMORPHIC);
 | 
| -    Handle<TypeFeedbackVector> vector =
 | 
| -        handle(current_feedback_vector(), isolate());
 | 
| -    result->SetVectorAndSlot(vector, slot);
 | 
| +        object, name, value, function_language_mode(), vector, slot);
 | 
|      return result;
 | 
|    }
 | 
|  }
 | 
| @@ -7455,25 +7449,15 @@ HInstruction* HOptimizedGraphBuilder::BuildNamedGeneric(
 | 
|  HInstruction* HOptimizedGraphBuilder::BuildKeyedGeneric(
 | 
|      PropertyAccessType access_type, Expression* expr, FeedbackVectorSlot slot,
 | 
|      HValue* object, HValue* key, HValue* value) {
 | 
| +  Handle<TypeFeedbackVector> vector =
 | 
| +      handle(current_feedback_vector(), isolate());
 | 
|    if (access_type == LOAD) {
 | 
| -    InlineCacheState initial_state = expr->AsProperty()->GetInlineCacheState();
 | 
|      HLoadKeyedGeneric* result =
 | 
| -        New<HLoadKeyedGeneric>(object, key, initial_state);
 | 
| -    // HLoadKeyedGeneric with vector ics benefits from being encoded as
 | 
| -    // MEGAMORPHIC because the vector/slot combo becomes unnecessary.
 | 
| -    if (initial_state != MEGAMORPHIC) {
 | 
| -      // We need to pass vector information.
 | 
| -      Handle<TypeFeedbackVector> vector =
 | 
| -          handle(current_feedback_vector(), isolate());
 | 
| -      result->SetVectorAndSlot(vector, slot);
 | 
| -    }
 | 
| +        New<HLoadKeyedGeneric>(object, key, vector, slot);
 | 
|      return result;
 | 
|    } else {
 | 
|      HStoreKeyedGeneric* result = New<HStoreKeyedGeneric>(
 | 
| -        object, key, value, function_language_mode(), PREMONOMORPHIC);
 | 
| -    Handle<TypeFeedbackVector> vector =
 | 
| -        handle(current_feedback_vector(), isolate());
 | 
| -    result->SetVectorAndSlot(vector, slot);
 | 
| +        object, key, value, function_language_mode(), vector, slot);
 | 
|      return result;
 | 
|    }
 | 
|  }
 | 
| 
 |