Index: src/arm64/lithium-codegen-arm64.cc |
diff --git a/src/arm64/lithium-codegen-arm64.cc b/src/arm64/lithium-codegen-arm64.cc |
index 76dd52ae4e4945879726a065144c408571f8ead6..17243c8dbe1a18fc689bd220affa05ff9982e3f5 100644 |
--- a/src/arm64/lithium-codegen-arm64.cc |
+++ b/src/arm64/lithium-codegen-arm64.cc |
@@ -2115,9 +2115,11 @@ void LCodeGen::DoCheckMaps(LCheckMaps* instr) { |
Register object_; |
}; |
- if (instr->hydrogen()->CanOmitMapChecks()) { |
- ASSERT(instr->value() == NULL); |
- ASSERT(instr->temp() == NULL); |
+ 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; |
} |
@@ -2127,7 +2129,7 @@ void LCodeGen::DoCheckMaps(LCheckMaps* instr) { |
__ Ldr(map_reg, FieldMemOperand(object, HeapObject::kMapOffset)); |
DeferredCheckMaps* deferred = NULL; |
- if (instr->hydrogen()->has_migration_target()) { |
+ if (instr->hydrogen()->HasMigrationTarget()) { |
deferred = new(zone()) DeferredCheckMaps(this, instr, object); |
__ Bind(deferred->check_maps()); |
} |
@@ -2143,7 +2145,7 @@ void LCodeGen::DoCheckMaps(LCheckMaps* instr) { |
__ CompareMap(map_reg, map); |
// We didn't match a map. |
- if (instr->hydrogen()->has_migration_target()) { |
+ if (instr->hydrogen()->HasMigrationTarget()) { |
__ B(ne, deferred->entry()); |
} else { |
DeoptimizeIf(ne, instr->environment()); |