| Index: src/hydrogen.cc
|
| diff --git a/src/hydrogen.cc b/src/hydrogen.cc
|
| index c79a8170b64ddfa0b8b3125fb6f4977db993ae6d..6e6eb9c7d686ee0183844508c5936afa7af4bfc9 100644
|
| --- a/src/hydrogen.cc
|
| +++ b/src/hydrogen.cc
|
| @@ -5406,11 +5406,8 @@ void HOptimizedGraphBuilder::VisitVariableProxy(VariableProxy* expr) {
|
| variable->name(),
|
| ast_context()->is_for_typeof());
|
| if (FLAG_vector_ics) {
|
| - Handle<SharedFunctionInfo> current_shared =
|
| - function_state()->compilation_info()->shared_info();
|
| - instr->SetVectorAndSlot(
|
| - handle(current_shared->feedback_vector(), isolate()),
|
| - expr->VariableFeedbackSlot());
|
| + instr->SetVectorAndSlot(handle(current_feedback_vector(), isolate()),
|
| + expr->VariableFeedbackSlot());
|
| }
|
| return ast_context()->ReturnInstruction(instr, expr->id());
|
| }
|
| @@ -6901,10 +6898,8 @@ HInstruction* HOptimizedGraphBuilder::BuildNamedGeneric(
|
| 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_shared->feedback_vector(), isolate());
|
| + handle(current_feedback_vector(), isolate());
|
| FeedbackVectorICSlot slot = expr->AsProperty()->PropertyFeedbackSlot();
|
| result->SetVectorAndSlot(vector, slot);
|
| }
|
| @@ -6924,16 +6919,10 @@ HInstruction* HOptimizedGraphBuilder::BuildKeyedGeneric(
|
| HValue* key,
|
| HValue* value) {
|
| if (access_type == LOAD) {
|
| - 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);
|
| - }
|
| + // 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);
|
| return result;
|
| } else {
|
| return New<HStoreKeyedGeneric>(object, key, value, function_language_mode(),
|
| @@ -9325,10 +9314,8 @@ void HOptimizedGraphBuilder::VisitCall(Call* expr) {
|
| 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_shared->feedback_vector(), isolate());
|
| + handle(current_feedback_vector(), isolate());
|
| FeedbackVectorICSlot slot = expr->CallFeedbackICSlot();
|
| call_function->SetVectorAndSlot(vector, slot);
|
| }
|
|
|