Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(9)

Unified Diff: src/ic/ic.cc

Issue 1507903004: Type Feedback Vector: Calculate profiler counts on the fly. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Comment response. Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/ic/ic.h ('k') | src/mips/code-stubs-mips.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
}
« no previous file with comments | « src/ic/ic.h ('k') | src/mips/code-stubs-mips.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698