| Index: src/type-info.cc
|
| diff --git a/src/type-info.cc b/src/type-info.cc
|
| index 040e25ecf4e5178382a4578f8b061d2e84ec3024..4ad66f85573e78786bb0716be81550146bdd627a 100644
|
| --- a/src/type-info.cc
|
| +++ b/src/type-info.cc
|
| @@ -90,31 +90,33 @@ Handle<Object> TypeFeedbackOracle::GetInfo(FeedbackVectorICSlot slot) {
|
| }
|
|
|
|
|
| -bool TypeFeedbackOracle::LoadIsUninitialized(TypeFeedbackId id) {
|
| +InlineCacheState TypeFeedbackOracle::LoadInlineCacheState(TypeFeedbackId id) {
|
| Handle<Object> maybe_code = GetInfo(id);
|
| if (maybe_code->IsCode()) {
|
| Handle<Code> code = Handle<Code>::cast(maybe_code);
|
| - return code->is_inline_cache_stub() && code->ic_state() == UNINITIALIZED;
|
| + if (code->is_inline_cache_stub()) return code->ic_state();
|
| }
|
| - return false;
|
| +
|
| + // If we can't find an IC, assume we've seen *something*, but we don't know
|
| + // what. PREMONOMORPHIC roughly encodes this meaning.
|
| + return PREMONOMORPHIC;
|
| }
|
|
|
|
|
| -bool TypeFeedbackOracle::LoadIsUninitialized(FeedbackVectorICSlot slot) {
|
| +InlineCacheState TypeFeedbackOracle::LoadInlineCacheState(
|
| + FeedbackVectorICSlot slot) {
|
| Code::Kind kind = feedback_vector_->GetKind(slot);
|
| if (kind == Code::LOAD_IC) {
|
| LoadICNexus nexus(feedback_vector_, slot);
|
| - return nexus.StateFromFeedback() == UNINITIALIZED;
|
| + return nexus.StateFromFeedback();
|
| } else if (kind == Code::KEYED_LOAD_IC) {
|
| KeyedLoadICNexus nexus(feedback_vector_, slot);
|
| - return nexus.StateFromFeedback() == UNINITIALIZED;
|
| - } else if (kind == Code::NUMBER_OF_KINDS) {
|
| - // Code::NUMBER_OF_KINDS indicates a slot that was never even compiled
|
| - // in full code.
|
| - return true;
|
| + return nexus.StateFromFeedback();
|
| }
|
|
|
| - return false;
|
| + // If we can't find an IC, assume we've seen *something*, but we don't know
|
| + // what. PREMONOMORPHIC roughly encodes this meaning.
|
| + return PREMONOMORPHIC;
|
| }
|
|
|
|
|
|
|