| 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());
|
|
|