Index: src/mips/lithium-codegen-mips.cc |
diff --git a/src/mips/lithium-codegen-mips.cc b/src/mips/lithium-codegen-mips.cc |
index a2df23fc5a88bcd6278f2a46a3b70fc3944bb6bd..440cfc75789890f289d7a9f90a923a087e8c80a2 100644 |
--- a/src/mips/lithium-codegen-mips.cc |
+++ b/src/mips/lithium-codegen-mips.cc |
@@ -2613,10 +2613,10 @@ void LCodeGen::DoInstanceOfKnownGlobal(LInstanceOfKnownGlobal* instr) { |
Handle<Cell> cell = factory()->NewCell(factory()->the_hole_value()); |
__ li(at, Operand(Handle<Object>(cell))); |
__ lw(at, FieldMemOperand(at, PropertyCell::kValueOffset)); |
- __ Branch(&cache_miss, ne, map, Operand(at)); |
+ __ BranchShort(&cache_miss, ne, map, Operand(at)); |
// We use Factory::the_hole_value() on purpose instead of loading from the |
// root array to force relocation to be able to later patch |
- // with true or false. |
+ // with true or false. The distance from map check has to be constant. |
__ li(result, Operand(factory()->the_hole_value()), CONSTANT_SIZE); |
__ Branch(&done); |
@@ -3755,6 +3755,7 @@ void LCodeGen::DoPower(LPower* instr) { |
Label no_deopt; |
__ JumpIfSmi(a2, &no_deopt); |
__ lw(t3, FieldMemOperand(a2, HeapObject::kMapOffset)); |
+ __ LoadRoot(at, Heap::kHeapNumberMapRootIndex); |
DeoptimizeIf(ne, instr->environment(), t3, Operand(at)); |
__ bind(&no_deopt); |
MathPowStub stub(MathPowStub::TAGGED); |