Index: src/ast/ast.cc |
diff --git a/src/ast/ast.cc b/src/ast/ast.cc |
index cc22ce1f1572a05218623b4ee50dd8ea3f9f5e3b..e5a252abd8c707ae26fac9ca422db225250a84a8 100644 |
--- a/src/ast/ast.cc |
+++ b/src/ast/ast.cc |
@@ -222,20 +222,19 @@ void VariableProxy::BindTo(Variable* var) { |
} |
void VariableProxy::AssignFeedbackVectorSlots(FeedbackVectorSpec* spec, |
- LanguageMode language_mode, |
+ TypeofMode typeof_mode, |
FeedbackVectorSlotCache* cache) { |
if (UsesVariableFeedbackSlot()) { |
// VariableProxies that point to the same Variable within a function can |
// make their loads from the same IC slot. |
if (var()->IsUnallocated() || var()->mode() == DYNAMIC_GLOBAL) { |
- ZoneHashMap::Entry* entry = cache->Get(var()); |
- if (entry != NULL) { |
- variable_feedback_slot_ = FeedbackVectorSlot( |
- static_cast<int>(reinterpret_cast<intptr_t>(entry->value))); |
+ FeedbackVectorSlot slot = cache->Get(typeof_mode, var()); |
+ if (!slot.IsInvalid()) { |
+ variable_feedback_slot_ = slot; |
return; |
} |
- variable_feedback_slot_ = spec->AddLoadGlobalICSlot(); |
- cache->Put(var(), variable_feedback_slot_); |
+ variable_feedback_slot_ = spec->AddLoadGlobalICSlot(typeof_mode); |
+ cache->Put(typeof_mode, var(), variable_feedback_slot_); |
} else { |
variable_feedback_slot_ = spec->AddLoadICSlot(); |
} |