| Index: src/hydrogen.cc
|
| diff --git a/src/hydrogen.cc b/src/hydrogen.cc
|
| index 6e6eb9c7d686ee0183844508c5936afa7af4bfc9..c79a8170b64ddfa0b8b3125fb6f4977db993ae6d 100644
|
| --- a/src/hydrogen.cc
|
| +++ b/src/hydrogen.cc
|
| @@ -5406,8 +5406,11 @@
|
| variable->name(),
|
| ast_context()->is_for_typeof());
|
| if (FLAG_vector_ics) {
|
| - instr->SetVectorAndSlot(handle(current_feedback_vector(), isolate()),
|
| - expr->VariableFeedbackSlot());
|
| + Handle<SharedFunctionInfo> current_shared =
|
| + function_state()->compilation_info()->shared_info();
|
| + instr->SetVectorAndSlot(
|
| + handle(current_shared->feedback_vector(), isolate()),
|
| + expr->VariableFeedbackSlot());
|
| }
|
| return ast_context()->ReturnInstruction(instr, expr->id());
|
| }
|
| @@ -6898,8 +6901,10 @@
|
| HLoadNamedGeneric* result =
|
| New<HLoadNamedGeneric>(object, name, PREMONOMORPHIC);
|
| if (FLAG_vector_ics) {
|
| + Handle<SharedFunctionInfo> current_shared =
|
| + function_state()->compilation_info()->shared_info();
|
| Handle<TypeFeedbackVector> vector =
|
| - handle(current_feedback_vector(), isolate());
|
| + handle(current_shared->feedback_vector(), isolate());
|
| FeedbackVectorICSlot slot = expr->AsProperty()->PropertyFeedbackSlot();
|
| result->SetVectorAndSlot(vector, slot);
|
| }
|
| @@ -6919,10 +6924,16 @@
|
| HValue* key,
|
| HValue* value) {
|
| if (access_type == LOAD) {
|
| - // HLoadKeyedGeneric with vector ics benefits from being encoded as
|
| - // MEGAMORPHIC because the vector/slot combo becomes unnecessary.
|
| - HLoadKeyedGeneric* result = New<HLoadKeyedGeneric>(
|
| - object, key, FLAG_vector_ics ? MEGAMORPHIC : PREMONOMORPHIC);
|
| + HLoadKeyedGeneric* result =
|
| + New<HLoadKeyedGeneric>(object, key, PREMONOMORPHIC);
|
| + if (FLAG_vector_ics) {
|
| + Handle<SharedFunctionInfo> current_shared =
|
| + function_state()->compilation_info()->shared_info();
|
| + Handle<TypeFeedbackVector> vector =
|
| + handle(current_shared->feedback_vector(), isolate());
|
| + FeedbackVectorICSlot slot = expr->AsProperty()->PropertyFeedbackSlot();
|
| + result->SetVectorAndSlot(vector, slot);
|
| + }
|
| return result;
|
| } else {
|
| return New<HStoreKeyedGeneric>(object, key, value, function_language_mode(),
|
| @@ -9314,8 +9325,10 @@
|
| expr->IsUsingCallFeedbackICSlot(isolate())) {
|
| // We've never seen this call before, so let's have Crankshaft learn
|
| // through the type vector.
|
| + Handle<SharedFunctionInfo> current_shared =
|
| + function_state()->compilation_info()->shared_info();
|
| Handle<TypeFeedbackVector> vector =
|
| - handle(current_feedback_vector(), isolate());
|
| + handle(current_shared->feedback_vector(), isolate());
|
| FeedbackVectorICSlot slot = expr->CallFeedbackICSlot();
|
| call_function->SetVectorAndSlot(vector, slot);
|
| }
|
|
|