| Index: src/type-info.cc
|
| diff --git a/src/type-info.cc b/src/type-info.cc
|
| index 6282ef68f90acc6f6e3b74aab049704dc6f42699..35beb1808a6a8d4319237d3a31f66aa034b03466 100644
|
| --- a/src/type-info.cc
|
| +++ b/src/type-info.cc
|
| @@ -43,12 +43,16 @@ namespace internal {
|
|
|
|
|
| TypeFeedbackOracle::TypeFeedbackOracle(Handle<Code> code,
|
| - Handle<FixedArray> feedback_vector,
|
| Handle<Context> native_context,
|
| Zone* zone)
|
| : native_context_(native_context),
|
| - zone_(zone),
|
| - feedback_vector_(feedback_vector) {
|
| + zone_(zone) {
|
| + Object* raw_info = code->type_feedback_info();
|
| + if (raw_info->IsTypeFeedbackInfo()) {
|
| + feedback_vector_ = Handle<FixedArray>(TypeFeedbackInfo::cast(raw_info)->
|
| + feedback_vector());
|
| + }
|
| +
|
| BuildDictionary(code);
|
| ASSERT(dictionary_->IsDictionary());
|
| }
|
| @@ -128,9 +132,9 @@ bool TypeFeedbackOracle::CallNewIsMonomorphic(int slot) {
|
|
|
| byte TypeFeedbackOracle::ForInType(int feedback_vector_slot) {
|
| Handle<Object> value = GetInfo(feedback_vector_slot);
|
| - return value.is_identical_to(
|
| - TypeFeedbackInfo::UninitializedSentinel(isolate()))
|
| - ? ForInStatement::FAST_FOR_IN : ForInStatement::SLOW_FOR_IN;
|
| + return value->IsSmi() &&
|
| + Smi::cast(*value)->value() == TypeFeedbackInfo::kForInFastCaseMarker
|
| + ? ForInStatement::FAST_FOR_IN : ForInStatement::SLOW_FOR_IN;
|
| }
|
|
|
|
|
|
|