Index: src/hydrogen-instructions.h |
diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h |
index b4fc65635f47b6db2396208e73b0b3b9e124f996..7bac08c117be5c6b69d97c4f5ff2a4ec24eb0f0c 100644 |
--- a/src/hydrogen-instructions.h |
+++ b/src/hydrogen-instructions.h |
@@ -2553,10 +2553,12 @@ class HCheckMaps: public HTemplateInstruction<2> { |
HValue* value, SmallMapList* maps, |
HValue *typecheck = NULL) { |
HCheckMaps* check_map = new(zone) HCheckMaps(value, zone, typecheck); |
+ bool has_migration_target = false; |
for (int i = 0; i < maps->length(); i++) { |
check_map->map_set_.Add(maps->at(i), zone); |
danno
2013/08/13 09:17:41
Why not choke-point the Add method, looking for ma
|
- check_map->has_migration_target_ |= maps->at(i)->is_migration_target(); |
+ has_migration_target |= maps->at(i)->is_migration_target(); |
} |
+ if (has_migration_target) check_map->MarkMigrationTarget(); |
check_map->map_set_.Sort(); |
return check_map; |
} |
@@ -2599,6 +2601,11 @@ class HCheckMaps: public HTemplateInstruction<2> { |
} |
private: |
+ void MarkMigrationTarget() { |
+ has_migration_target_ = true; |
+ SetGVNFlag(kChangesNewSpacePromotion); |
+ } |
+ |
// Clients should use one of the static New* methods above. |
HCheckMaps(HValue* value, Zone *zone, HValue* typecheck) |
: HTemplateInstruction<2>(value->type()), |