| Index: src/type-info.cc
|
| diff --git a/src/type-info.cc b/src/type-info.cc
|
| index 9949449f5f07e7ffeb19d7ebe78a3d204f031650..b3ac53bec884d712a39d941088e0adca7f89850c 100644
|
| --- a/src/type-info.cc
|
| +++ b/src/type-info.cc
|
| @@ -44,10 +44,8 @@ namespace internal {
|
|
|
| TypeFeedbackOracle::TypeFeedbackOracle(Handle<Code> code,
|
| Handle<Context> native_context,
|
| - Isolate* isolate,
|
| Zone* zone)
|
| : native_context_(native_context),
|
| - isolate_(isolate),
|
| zone_(zone) {
|
| BuildDictionary(code);
|
| ASSERT(dictionary_->IsDictionary());
|
| @@ -65,12 +63,12 @@ Handle<Object> TypeFeedbackOracle::GetInfo(TypeFeedbackId ast_id) {
|
| Object* value = dictionary_->ValueAt(entry);
|
| if (value->IsCell()) {
|
| Cell* cell = Cell::cast(value);
|
| - return Handle<Object>(cell->value(), isolate_);
|
| + return Handle<Object>(cell->value(), isolate());
|
| } else {
|
| - return Handle<Object>(value, isolate_);
|
| + return Handle<Object>(value, isolate());
|
| }
|
| }
|
| - return Handle<Object>::cast(isolate_->factory()->undefined_value());
|
| + return Handle<Object>::cast(isolate()->factory()->undefined_value());
|
| }
|
|
|
|
|
| @@ -79,7 +77,7 @@ Handle<Cell> TypeFeedbackOracle::GetInfoCell(
|
| int entry = dictionary_->FindEntry(IdToKey(ast_id));
|
| if (entry != UnseededNumberDictionary::kNotFound) {
|
| Cell* cell = Cell::cast(dictionary_->ValueAt(entry));
|
| - return Handle<Cell>(cell, isolate_);
|
| + return Handle<Cell>(cell, isolate());
|
| }
|
| return Handle<Cell>::null();
|
| }
|
| @@ -206,7 +204,7 @@ CheckType TypeFeedbackOracle::GetCallCheckType(TypeFeedbackId id) {
|
| Handle<JSFunction> TypeFeedbackOracle::GetCallTarget(TypeFeedbackId id) {
|
| Handle<Object> info = GetInfo(id);
|
| if (info->IsAllocationSite()) {
|
| - return Handle<JSFunction>(isolate_->global_context()->array_function());
|
| + return Handle<JSFunction>(isolate()->global_context()->array_function());
|
| } else {
|
| return Handle<JSFunction>::cast(info);
|
| }
|
| @@ -216,7 +214,7 @@ Handle<JSFunction> TypeFeedbackOracle::GetCallTarget(TypeFeedbackId id) {
|
| Handle<JSFunction> TypeFeedbackOracle::GetCallNewTarget(TypeFeedbackId id) {
|
| Handle<Object> info = GetInfo(id);
|
| if (info->IsAllocationSite()) {
|
| - return Handle<JSFunction>(isolate_->global_context()->array_function());
|
| + return Handle<JSFunction>(isolate()->global_context()->array_function());
|
| } else {
|
| return Handle<JSFunction>::cast(info);
|
| }
|
| @@ -231,7 +229,7 @@ Handle<Cell> TypeFeedbackOracle::GetCallNewAllocationInfoCell(
|
|
|
| bool TypeFeedbackOracle::LoadIsBuiltin(
|
| TypeFeedbackId id, Builtins::Name builtin) {
|
| - return *GetInfo(id) == isolate_->builtins()->builtin(builtin);
|
| + return *GetInfo(id) == isolate()->builtins()->builtin(builtin);
|
| }
|
|
|
|
|
| @@ -246,13 +244,13 @@ bool TypeFeedbackOracle::LoadIsStub(TypeFeedbackId id, ICStub* stub) {
|
|
|
|
|
| void TypeFeedbackOracle::CompareType(TypeFeedbackId id,
|
| - Handle<Type>* left_type,
|
| - Handle<Type>* right_type,
|
| - Handle<Type>* combined_type) {
|
| + Type** left_type,
|
| + Type** right_type,
|
| + Type** combined_type) {
|
| Handle<Object> info = GetInfo(id);
|
| if (!info->IsCode()) {
|
| // For some comparisons we don't have ICs, e.g. LiteralCompareTypeof.
|
| - *left_type = *right_type = *combined_type = Type::None(isolate_);
|
| + *left_type = *right_type = *combined_type = Type::None(zone());
|
| return;
|
| }
|
| Handle<Code> code = Handle<Code>::cast(info);
|
| @@ -269,19 +267,19 @@ void TypeFeedbackOracle::CompareType(TypeFeedbackId id,
|
| if (code->is_compare_ic_stub()) {
|
| int stub_minor_key = code->stub_info();
|
| CompareIC::StubInfoToType(
|
| - stub_minor_key, left_type, right_type, combined_type, map, isolate());
|
| + stub_minor_key, left_type, right_type, combined_type, map, zone());
|
| } else if (code->is_compare_nil_ic_stub()) {
|
| CompareNilICStub stub(code->extended_extra_ic_state());
|
| - *combined_type = stub.GetType(isolate_, map);
|
| - *left_type = *right_type = stub.GetInputType(isolate_, map);
|
| + *combined_type = stub.GetType(zone(), map);
|
| + *left_type = *right_type = stub.GetInputType(zone(), map);
|
| }
|
| }
|
|
|
|
|
| void TypeFeedbackOracle::BinaryType(TypeFeedbackId id,
|
| - Handle<Type>* left,
|
| - Handle<Type>* right,
|
| - Handle<Type>* result,
|
| + Type** left,
|
| + Type** right,
|
| + Type** result,
|
| Maybe<int>* fixed_right_arg,
|
| Token::Value op) {
|
| Handle<Object> object = GetInfo(id);
|
| @@ -290,7 +288,7 @@ void TypeFeedbackOracle::BinaryType(TypeFeedbackId id,
|
| // operations covered by the BinaryOpIC we should always have them.
|
| ASSERT(op < BinaryOpIC::State::FIRST_TOKEN ||
|
| op > BinaryOpIC::State::LAST_TOKEN);
|
| - *left = *right = *result = Type::None(isolate_);
|
| + *left = *right = *result = Type::None(zone());
|
| *fixed_right_arg = Maybe<int>();
|
| return;
|
| }
|
| @@ -299,20 +297,20 @@ void TypeFeedbackOracle::BinaryType(TypeFeedbackId id,
|
| BinaryOpIC::State state(code->extended_extra_ic_state());
|
| ASSERT_EQ(op, state.op());
|
|
|
| - *left = state.GetLeftType(isolate());
|
| - *right = state.GetRightType(isolate());
|
| - *result = state.GetResultType(isolate());
|
| + *left = state.GetLeftType(zone());
|
| + *right = state.GetRightType(zone());
|
| + *result = state.GetResultType(zone());
|
| *fixed_right_arg = state.fixed_right_arg();
|
| }
|
|
|
|
|
| -Handle<Type> TypeFeedbackOracle::CountType(TypeFeedbackId id) {
|
| +Type* TypeFeedbackOracle::CountType(TypeFeedbackId id) {
|
| Handle<Object> object = GetInfo(id);
|
| - if (!object->IsCode()) return Type::None(isolate_);
|
| + if (!object->IsCode()) return Type::None(zone());
|
| Handle<Code> code = Handle<Code>::cast(object);
|
| ASSERT_EQ(Code::BINARY_OP_IC, code->kind());
|
| BinaryOpIC::State state(code->extended_extra_ic_state());
|
| - return state.GetLeftType(isolate());
|
| + return state.GetLeftType(zone());
|
| }
|
|
|
|
|
| @@ -382,7 +380,7 @@ void TypeFeedbackOracle::CollectReceiverTypes(TypeFeedbackId ast_id,
|
| if (FLAG_collect_megamorphic_maps_from_stub_cache &&
|
| code->ic_state() == MEGAMORPHIC) {
|
| types->Reserve(4, zone());
|
| - isolate_->stub_cache()->CollectMatchingMaps(
|
| + isolate()->stub_cache()->CollectMatchingMaps(
|
| types, name, flags, native_context_, zone());
|
| } else {
|
| CollectReceiverTypes(ast_id, types);
|
| @@ -461,7 +459,7 @@ byte TypeFeedbackOracle::ToBooleanTypes(TypeFeedbackId id) {
|
| void TypeFeedbackOracle::BuildDictionary(Handle<Code> code) {
|
| DisallowHeapAllocation no_allocation;
|
| ZoneList<RelocInfo> infos(16, zone());
|
| - HandleScope scope(isolate_);
|
| + HandleScope scope(isolate());
|
| GetRelocInfos(code, &infos);
|
| CreateDictionary(code, &infos);
|
| ProcessRelocInfos(&infos);
|
|
|