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