| Index: test/cctest/test-feedback-vector.cc | 
| diff --git a/test/cctest/test-feedback-vector.cc b/test/cctest/test-feedback-vector.cc | 
| index d242161a6b8ba4e61617ab6986039238c0db6189..d81c9aa4eba4891ad7156f0848303ea4ec8f1459 100644 | 
| --- a/test/cctest/test-feedback-vector.cc | 
| +++ b/test/cctest/test-feedback-vector.cc | 
| @@ -374,32 +374,40 @@ TEST(VectorLoadICStates) { | 
| CHECK_EQ(MEGAMORPHIC, nexus.StateFromFeedback()); | 
| } | 
|  | 
| - | 
| -TEST(VectorLoadICSlotSharing) { | 
| +TEST(VectorLoadGlobalICSlotSharing) { | 
| if (i::FLAG_always_opt) return; | 
| CcTest::InitializeVM(); | 
| LocalContext context; | 
| v8::HandleScope scope(context->GetIsolate()); | 
| Isolate* isolate = CcTest::i_isolate(); | 
|  | 
| -  // Function f has 3 LoadICs, one for each o, but the ICs share the same | 
| -  // feedback vector IC slot. | 
| +  // Function f has 5 LoadGlobalICs: 3 for {o} references outside of "typeof" | 
| +  // operator and 2 for {o} references inside "typeof" operator. | 
| CompileRun( | 
| "o = 10;" | 
| "function f() {" | 
| "  var x = o || 10;" | 
| -      "  return o , x , o;" | 
| +      "  var y = typeof o;" | 
| +      "  return o , typeof o, x , y, o;" | 
| "}" | 
| "f();"); | 
| Handle<JSFunction> f = GetFunction("f"); | 
| -  // There should be one IC slot. | 
| +  // There should be two IC slots for {o} references outside and inside | 
| +  // typeof operator respectively. | 
| Handle<TypeFeedbackVector> feedback_vector = | 
| Handle<TypeFeedbackVector>(f->feedback_vector(), isolate); | 
| FeedbackVectorHelper helper(feedback_vector); | 
| -  CHECK_EQ(1, helper.slot_count()); | 
| -  FeedbackVectorSlot slot(0); | 
| -  LoadGlobalICNexus nexus(feedback_vector, slot); | 
| -  CHECK_EQ(MONOMORPHIC, nexus.StateFromFeedback()); | 
| +  CHECK_EQ(2, helper.slot_count()); | 
| +  CHECK_SLOT_KIND(helper, 0, | 
| +                  FeedbackVectorSlotKind::LOAD_GLOBAL_NOT_INSIDE_TYPEOF_IC); | 
| +  CHECK_SLOT_KIND(helper, 1, | 
| +                  FeedbackVectorSlotKind::LOAD_GLOBAL_INSIDE_TYPEOF_IC); | 
| +  FeedbackVectorSlot slot1 = helper.slot(0); | 
| +  FeedbackVectorSlot slot2 = helper.slot(1); | 
| +  CHECK_EQ(MONOMORPHIC, | 
| +           LoadGlobalICNexus(feedback_vector, slot1).StateFromFeedback()); | 
| +  CHECK_EQ(MONOMORPHIC, | 
| +           LoadGlobalICNexus(feedback_vector, slot2).StateFromFeedback()); | 
| } | 
|  | 
|  | 
| @@ -487,9 +495,11 @@ TEST(ReferenceContextAllocatesNoSlots) { | 
| FeedbackVectorHelper helper(feedback_vector); | 
| CHECK_EQ(4, helper.slot_count()); | 
| CHECK_SLOT_KIND(helper, 0, FeedbackVectorSlotKind::STORE_SLOPPY_IC); | 
| -    CHECK_SLOT_KIND(helper, 1, FeedbackVectorSlotKind::LOAD_GLOBAL_IC); | 
| +    CHECK_SLOT_KIND(helper, 1, | 
| +                    FeedbackVectorSlotKind::LOAD_GLOBAL_NOT_INSIDE_TYPEOF_IC); | 
| CHECK_SLOT_KIND(helper, 2, FeedbackVectorSlotKind::STORE_SLOPPY_IC); | 
| -    CHECK_SLOT_KIND(helper, 3, FeedbackVectorSlotKind::LOAD_GLOBAL_IC); | 
| +    CHECK_SLOT_KIND(helper, 3, | 
| +                    FeedbackVectorSlotKind::LOAD_GLOBAL_NOT_INSIDE_TYPEOF_IC); | 
| } | 
|  | 
| { | 
| @@ -506,7 +516,8 @@ TEST(ReferenceContextAllocatesNoSlots) { | 
| Handle<TypeFeedbackVector> feedback_vector(f->feedback_vector()); | 
| FeedbackVectorHelper helper(feedback_vector); | 
| CHECK_EQ(2, helper.slot_count()); | 
| -    CHECK_SLOT_KIND(helper, 0, FeedbackVectorSlotKind::LOAD_GLOBAL_IC); | 
| +    CHECK_SLOT_KIND(helper, 0, | 
| +                    FeedbackVectorSlotKind::LOAD_GLOBAL_NOT_INSIDE_TYPEOF_IC); | 
| CHECK_SLOT_KIND(helper, 1, FeedbackVectorSlotKind::STORE_STRICT_IC); | 
| } | 
|  | 
| @@ -527,7 +538,8 @@ TEST(ReferenceContextAllocatesNoSlots) { | 
| FeedbackVectorHelper helper(feedback_vector); | 
| CHECK_EQ(5, helper.slot_count()); | 
| CHECK_SLOT_KIND(helper, 0, FeedbackVectorSlotKind::CALL_IC); | 
| -    CHECK_SLOT_KIND(helper, 1, FeedbackVectorSlotKind::LOAD_GLOBAL_IC); | 
| +    CHECK_SLOT_KIND(helper, 1, | 
| +                    FeedbackVectorSlotKind::LOAD_GLOBAL_NOT_INSIDE_TYPEOF_IC); | 
| CHECK_SLOT_KIND(helper, 2, FeedbackVectorSlotKind::STORE_SLOPPY_IC); | 
| CHECK_SLOT_KIND(helper, 3, FeedbackVectorSlotKind::CALL_IC); | 
| CHECK_SLOT_KIND(helper, 4, FeedbackVectorSlotKind::LOAD_IC); | 
| @@ -548,7 +560,8 @@ TEST(ReferenceContextAllocatesNoSlots) { | 
| Handle<TypeFeedbackVector> feedback_vector(f->feedback_vector()); | 
| FeedbackVectorHelper helper(feedback_vector); | 
| CHECK_EQ(3, helper.slot_count()); | 
| -    CHECK_SLOT_KIND(helper, 0, FeedbackVectorSlotKind::LOAD_GLOBAL_IC); | 
| +    CHECK_SLOT_KIND(helper, 0, | 
| +                    FeedbackVectorSlotKind::LOAD_GLOBAL_NOT_INSIDE_TYPEOF_IC); | 
| CHECK_SLOT_KIND(helper, 1, FeedbackVectorSlotKind::KEYED_STORE_SLOPPY_IC); | 
| CHECK_SLOT_KIND(helper, 2, FeedbackVectorSlotKind::KEYED_LOAD_IC); | 
| } | 
| @@ -569,7 +582,8 @@ TEST(ReferenceContextAllocatesNoSlots) { | 
| Handle<TypeFeedbackVector> feedback_vector(f->feedback_vector()); | 
| FeedbackVectorHelper helper(feedback_vector); | 
| CHECK_EQ(3, helper.slot_count()); | 
| -    CHECK_SLOT_KIND(helper, 0, FeedbackVectorSlotKind::LOAD_GLOBAL_IC); | 
| +    CHECK_SLOT_KIND(helper, 0, | 
| +                    FeedbackVectorSlotKind::LOAD_GLOBAL_NOT_INSIDE_TYPEOF_IC); | 
| CHECK_SLOT_KIND(helper, 1, FeedbackVectorSlotKind::KEYED_STORE_STRICT_IC); | 
| CHECK_SLOT_KIND(helper, 2, FeedbackVectorSlotKind::KEYED_LOAD_IC); | 
| } | 
| @@ -590,7 +604,8 @@ TEST(ReferenceContextAllocatesNoSlots) { | 
| Handle<TypeFeedbackVector> feedback_vector(f->feedback_vector()); | 
| FeedbackVectorHelper helper(feedback_vector); | 
| CHECK_EQ(7, helper.slot_count()); | 
| -    CHECK_SLOT_KIND(helper, 0, FeedbackVectorSlotKind::LOAD_GLOBAL_IC); | 
| +    CHECK_SLOT_KIND(helper, 0, | 
| +                    FeedbackVectorSlotKind::LOAD_GLOBAL_NOT_INSIDE_TYPEOF_IC); | 
| CHECK_SLOT_KIND(helper, 1, FeedbackVectorSlotKind::STORE_STRICT_IC); | 
| CHECK_SLOT_KIND(helper, 2, FeedbackVectorSlotKind::STORE_STRICT_IC); | 
| CHECK_SLOT_KIND(helper, 3, FeedbackVectorSlotKind::STORE_STRICT_IC); | 
|  |