| 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();
|
| }
|
|
|