Index: src/arm/lithium-codegen-arm.cc |
diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc |
index 3eda96242f23f67f1d55e5dd9647593468489567..19b34dada49f1d762b259e8a6632608751eb40f5 100644 |
--- a/src/arm/lithium-codegen-arm.cc |
+++ b/src/arm/lithium-codegen-arm.cc |
@@ -5140,7 +5140,14 @@ void LCodeGen::DoCheckMaps(LCheckMaps* instr) { |
Register object_; |
}; |
- if (instr->hydrogen()->CanOmitMapChecks()) return; |
+ if (instr->hydrogen()->IsStabilityCheck()) { |
+ const UniqueSet<Map>* maps = instr->hydrogen()->maps(); |
+ for (int i = 0; i < maps->size(); ++i) { |
+ AddStabilityDependency(maps->at(i).handle()); |
+ } |
+ return; |
+ } |
+ |
Register map_reg = scratch0(); |
LOperand* input = instr->value(); |
@@ -5150,7 +5157,7 @@ void LCodeGen::DoCheckMaps(LCheckMaps* instr) { |
__ ldr(map_reg, FieldMemOperand(reg, HeapObject::kMapOffset)); |
DeferredCheckMaps* deferred = NULL; |
- if (instr->hydrogen()->has_migration_target()) { |
+ if (instr->hydrogen()->HasMigrationTarget()) { |
deferred = new(zone()) DeferredCheckMaps(this, instr, reg); |
__ bind(deferred->check_maps()); |
} |
@@ -5165,7 +5172,7 @@ void LCodeGen::DoCheckMaps(LCheckMaps* instr) { |
Handle<Map> map = maps->at(maps->size() - 1).handle(); |
__ CompareMap(map_reg, map, &success); |
- if (instr->hydrogen()->has_migration_target()) { |
+ if (instr->hydrogen()->HasMigrationTarget()) { |
__ b(ne, deferred->entry()); |
} else { |
DeoptimizeIf(ne, instr->environment()); |