| Index: src/ic/ic.cc
|
| diff --git a/src/ic/ic.cc b/src/ic/ic.cc
|
| index dd9b0f10abbf43e43713e5c6e1b2b348d26cbf56..7062a5c3dc97ddc5d37ad5515db658c041704462 100644
|
| --- a/src/ic/ic.cc
|
| +++ b/src/ic/ic.cc
|
| @@ -415,19 +415,9 @@ void IC::OnTypeFeedbackChanged(Isolate* isolate, Address address,
|
|
|
|
|
| // static
|
| -void IC::OnTypeFeedbackChanged(Isolate* isolate, Code* host,
|
| - TypeFeedbackVector* vector, State old_state,
|
| - State new_state) {
|
| +void IC::OnTypeFeedbackChanged(Isolate* isolate, Code* host) {
|
| if (host->kind() != Code::FUNCTION) return;
|
|
|
| - if (FLAG_type_info_threshold > 0) {
|
| - int polymorphic_delta = 0; // "Polymorphic" here includes monomorphic.
|
| - int generic_delta = 0; // "Generic" here includes megamorphic.
|
| - ComputeTypeInfoCountDelta(old_state, new_state, &polymorphic_delta,
|
| - &generic_delta);
|
| - vector->change_ic_with_type_info_count(polymorphic_delta);
|
| - vector->change_ic_generic_count(generic_delta);
|
| - }
|
| TypeFeedbackInfo* info = TypeFeedbackInfo::cast(host->type_feedback_info());
|
| info->change_own_type_change_checksum();
|
| host->set_profiler_ticks(0);
|
| @@ -491,9 +481,8 @@ void KeyedLoadIC::Clear(Isolate* isolate, Code* host, KeyedLoadICNexus* nexus) {
|
| // Make sure to also clear the map used in inline fast cases. If we
|
| // do not clear these maps, cached code can keep objects alive
|
| // through the embedded maps.
|
| - State state = nexus->StateFromFeedback();
|
| nexus->ConfigurePremonomorphic();
|
| - OnTypeFeedbackChanged(isolate, host, nexus->vector(), state, PREMONOMORPHIC);
|
| + OnTypeFeedbackChanged(isolate, host);
|
| }
|
|
|
|
|
| @@ -505,16 +494,15 @@ void CallIC::Clear(Isolate* isolate, Code* host, CallICNexus* nexus) {
|
| if (state != UNINITIALIZED && !feedback->IsAllocationSite()) {
|
| nexus->ConfigureUninitialized();
|
| // The change in state must be processed.
|
| - OnTypeFeedbackChanged(isolate, host, nexus->vector(), state, UNINITIALIZED);
|
| + OnTypeFeedbackChanged(isolate, host);
|
| }
|
| }
|
|
|
|
|
| void LoadIC::Clear(Isolate* isolate, Code* host, LoadICNexus* nexus) {
|
| if (IsCleared(nexus)) return;
|
| - State state = nexus->StateFromFeedback();
|
| nexus->ConfigurePremonomorphic();
|
| - OnTypeFeedbackChanged(isolate, host, nexus->vector(), state, PREMONOMORPHIC);
|
| + OnTypeFeedbackChanged(isolate, host);
|
| }
|
|
|
|
|
| @@ -529,9 +517,8 @@ void StoreIC::Clear(Isolate* isolate, Address address, Code* target,
|
|
|
| void StoreIC::Clear(Isolate* isolate, Code* host, StoreICNexus* nexus) {
|
| if (IsCleared(nexus)) return;
|
| - State state = nexus->StateFromFeedback();
|
| nexus->ConfigurePremonomorphic();
|
| - OnTypeFeedbackChanged(isolate, host, nexus->vector(), state, PREMONOMORPHIC);
|
| + OnTypeFeedbackChanged(isolate, host);
|
| }
|
|
|
|
|
| @@ -547,9 +534,8 @@ void KeyedStoreIC::Clear(Isolate* isolate, Address address, Code* target,
|
| void KeyedStoreIC::Clear(Isolate* isolate, Code* host,
|
| KeyedStoreICNexus* nexus) {
|
| if (IsCleared(nexus)) return;
|
| - State state = nexus->StateFromFeedback();
|
| nexus->ConfigurePremonomorphic();
|
| - OnTypeFeedbackChanged(isolate, host, nexus->vector(), state, PREMONOMORPHIC);
|
| + OnTypeFeedbackChanged(isolate, host);
|
| }
|
|
|
|
|
| @@ -599,8 +585,7 @@ void IC::ConfigureVectorState(IC::State new_state) {
|
| }
|
|
|
| vector_set_ = true;
|
| - OnTypeFeedbackChanged(isolate(), get_host(), *vector(), saved_state(),
|
| - new_state);
|
| + OnTypeFeedbackChanged(isolate(), get_host());
|
| }
|
|
|
|
|
| @@ -623,8 +608,7 @@ void IC::ConfigureVectorState(Handle<Name> name, Handle<Map> map,
|
| }
|
|
|
| vector_set_ = true;
|
| - OnTypeFeedbackChanged(isolate(), get_host(), *vector(), saved_state(),
|
| - MONOMORPHIC);
|
| + OnTypeFeedbackChanged(isolate(), get_host());
|
| }
|
|
|
|
|
| @@ -647,8 +631,7 @@ void IC::ConfigureVectorState(Handle<Name> name, MapHandleList* maps,
|
| }
|
|
|
| vector_set_ = true;
|
| - OnTypeFeedbackChanged(isolate(), get_host(), *vector(), saved_state(),
|
| - POLYMORPHIC);
|
| + OnTypeFeedbackChanged(isolate(), get_host());
|
| }
|
|
|
|
|
| @@ -661,8 +644,7 @@ void IC::ConfigureVectorState(MapHandleList* maps,
|
| nexus->ConfigurePolymorphic(maps, transitioned_maps, handlers);
|
|
|
| vector_set_ = true;
|
| - OnTypeFeedbackChanged(isolate(), get_host(), *vector(), saved_state(),
|
| - POLYMORPHIC);
|
| + OnTypeFeedbackChanged(isolate(), get_host());
|
| }
|
|
|
|
|
| @@ -2205,8 +2187,7 @@ void CallIC::HandleMiss(Handle<Object> function) {
|
| name = handle(js_function->shared()->name(), isolate());
|
| }
|
|
|
| - IC::State new_state = nexus->StateFromFeedback();
|
| - OnTypeFeedbackChanged(isolate(), get_host(), *vector(), state(), new_state);
|
| + OnTypeFeedbackChanged(isolate(), get_host());
|
| TRACE_IC("CallIC", name);
|
| }
|
|
|
|
|