Index: src/x64/lithium-codegen-x64.cc |
diff --git a/src/x64/lithium-codegen-x64.cc b/src/x64/lithium-codegen-x64.cc |
index b3a1c30f37fa200338789f9737d9b38401558d79..c49fa930f88f6620bfc0fe96939380a7bbd9a639 100644 |
--- a/src/x64/lithium-codegen-x64.cc |
+++ b/src/x64/lithium-codegen-x64.cc |
@@ -5013,14 +5013,20 @@ 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; |
+ } |
LOperand* input = instr->value(); |
ASSERT(input->IsRegister()); |
Register reg = ToRegister(input); |
DeferredCheckMaps* deferred = NULL; |
- if (instr->hydrogen()->has_migration_target()) { |
+ if (instr->hydrogen()->HasMigrationTarget()) { |
deferred = new(zone()) DeferredCheckMaps(this, instr, reg); |
__ bind(deferred->check_maps()); |
} |
@@ -5035,7 +5041,7 @@ void LCodeGen::DoCheckMaps(LCheckMaps* instr) { |
Handle<Map> map = maps->at(maps->size() - 1).handle(); |
__ CompareMap(reg, map); |
- if (instr->hydrogen()->has_migration_target()) { |
+ if (instr->hydrogen()->HasMigrationTarget()) { |
__ j(not_equal, deferred->entry()); |
} else { |
DeoptimizeIf(not_equal, instr->environment()); |