Index: src/ic/ic-inl.h |
diff --git a/src/ic/ic-inl.h b/src/ic/ic-inl.h |
index 22f66d0409b03d45ce443c95caf897d4cb5d8628..91b8955fd47ca08b7eb2cd6d63aa788cf67efb23 100644 |
--- a/src/ic/ic-inl.h |
+++ b/src/ic/ic-inl.h |
@@ -208,12 +208,30 @@ Handle<Map> IC::GetICCacheHolder(HeapType* type, Isolate* isolate, |
} |
-inline Code* IC::get_host() { |
+inline Code* CallIC::get_host() { |
return isolate() |
->inner_pointer_to_code_cache() |
->GetCacheEntry(address()) |
->code; |
} |
+ |
+ |
+// static |
+IC::State CallIC::FeedbackToState(Isolate* isolate, TypeFeedbackVector* vector, |
+ FeedbackVectorICSlot slot) { |
+ IC::State state = UNINITIALIZED; |
+ Object* feedback = vector->Get(slot); |
+ |
+ if (feedback == *TypeFeedbackVector::MegamorphicSentinel(isolate)) { |
+ state = GENERIC; |
+ } else if (feedback->IsAllocationSite() || feedback->IsJSFunction()) { |
+ state = MONOMORPHIC; |
+ } else { |
+ CHECK(feedback == *TypeFeedbackVector::UninitializedSentinel(isolate)); |
+ } |
+ |
+ return state; |
+} |
} |
} // namespace v8::internal |