Index: src/type-info.cc |
diff --git a/src/type-info.cc b/src/type-info.cc |
index 159be6a5a1ba9ec9b99c1a5ff97927616222daad..f5e9106742f2e98bf71c28dd10c1d31c8300f0c4 100644 |
--- a/src/type-info.cc |
+++ b/src/type-info.cc |
@@ -61,9 +61,11 @@ TypeInfo TypeInfo::TypeFromValue(Handle<Object> value) { |
TypeFeedbackOracle::TypeFeedbackOracle(Handle<Code> code, |
Handle<Context> global_context, |
- Isolate* isolate) { |
+ Isolate* isolate, |
+ Zone* zone) { |
global_context_ = global_context; |
isolate_ = isolate; |
+ zone_ = zone; |
BuildDictionary(code); |
ASSERT(reinterpret_cast<Address>(*dictionary_.location()) != kHandleZapValue); |
} |
@@ -501,10 +503,10 @@ void TypeFeedbackOracle::CollectReceiverTypes(unsigned ast_id, |
// we need a generic store (or load) here. |
ASSERT(Handle<Code>::cast(object)->ic_state() == MEGAMORPHIC); |
} else if (object->IsMap()) { |
- types->Add(Handle<Map>::cast(object)); |
+ types->Add(Handle<Map>::cast(object), zone()); |
} else if (FLAG_collect_megamorphic_maps_from_stub_cache && |
Handle<Code>::cast(object)->ic_state() == MEGAMORPHIC) { |
- types->Reserve(4); |
+ types->Reserve(4, zone()); |
ASSERT(object->IsCode()); |
isolate_->stub_cache()->CollectMatchingMaps(types, |
*name, |
@@ -548,11 +550,12 @@ bool TypeFeedbackOracle::CanRetainOtherContext(JSFunction* function, |
} |
-static void AddMapIfMissing(Handle<Map> map, SmallMapList* list) { |
+static void AddMapIfMissing(Handle<Map> map, SmallMapList* list, |
+ Zone* zone) { |
for (int i = 0; i < list->length(); ++i) { |
if (list->at(i).is_identical_to(map)) return; |
} |
- list->Add(map); |
+ list->Add(map, zone); |
} |
@@ -571,7 +574,7 @@ void TypeFeedbackOracle::CollectKeyedReceiverTypes(unsigned ast_id, |
if (object->IsMap()) { |
Map* map = Map::cast(object); |
if (!CanRetainOtherContext(map, *global_context_)) { |
- AddMapIfMissing(Handle<Map>(map), types); |
+ AddMapIfMissing(Handle<Map>(map), types, zone()); |
} |
} |
} |
@@ -591,7 +594,7 @@ byte TypeFeedbackOracle::ToBooleanTypes(unsigned ast_id) { |
// infos before we process them. |
void TypeFeedbackOracle::BuildDictionary(Handle<Code> code) { |
AssertNoAllocation no_allocation; |
- ZoneList<RelocInfo> infos(16); |
+ ZoneList<RelocInfo> infos(16, zone()); |
HandleScope scope; |
GetRelocInfos(code, &infos); |
CreateDictionary(code, &infos); |
@@ -606,7 +609,7 @@ void TypeFeedbackOracle::GetRelocInfos(Handle<Code> code, |
ZoneList<RelocInfo>* infos) { |
int mask = RelocInfo::ModeMask(RelocInfo::CODE_TARGET_WITH_ID); |
for (RelocIterator it(*code, mask); !it.done(); it.next()) { |
- infos->Add(*it.rinfo()); |
+ infos->Add(*it.rinfo(), zone()); |
} |
} |