| Index: src/mips/lithium-codegen-mips.cc
|
| diff --git a/src/mips/lithium-codegen-mips.cc b/src/mips/lithium-codegen-mips.cc
|
| index d95f0c36077eb9637bce590e3a556ce486f473e9..e8593d98e33b5368b391ef97f0136ac263394c59 100644
|
| --- a/src/mips/lithium-codegen-mips.cc
|
| +++ b/src/mips/lithium-codegen-mips.cc
|
| @@ -5164,7 +5164,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();
|
| ASSERT(input->IsRegister());
|
| @@ -5172,7 +5179,7 @@ void LCodeGen::DoCheckMaps(LCheckMaps* instr) {
|
| __ lw(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());
|
| }
|
| @@ -5185,7 +5192,7 @@ void LCodeGen::DoCheckMaps(LCheckMaps* instr) {
|
| }
|
| Handle<Map> map = maps->at(maps->size() - 1).handle();
|
| // Do the CompareMap() directly within the Branch() and DeoptimizeIf().
|
| - if (instr->hydrogen()->has_migration_target()) {
|
| + if (instr->hydrogen()->HasMigrationTarget()) {
|
| __ Branch(deferred->entry(), ne, map_reg, Operand(map));
|
| } else {
|
| DeoptimizeIf(ne, instr->environment(), map_reg, Operand(map));
|
|
|