Index: src/mips/lithium-gap-resolver-mips.cc |
diff --git a/src/mips/lithium-gap-resolver-mips.cc b/src/mips/lithium-gap-resolver-mips.cc |
index 87efae5f4df6aead3e356bda21a14a2161e614c8..23a8f32f76ee41b4e33b7e9cc55fc53a0e5981d2 100644 |
--- a/src/mips/lithium-gap-resolver-mips.cc |
+++ b/src/mips/lithium-gap-resolver-mips.cc |
@@ -252,7 +252,9 @@ void LGapResolver::EmitMove(int index) { |
LConstantOperand* constant_source = LConstantOperand::cast(source); |
if (destination->IsRegister()) { |
Register dst = cgen_->ToRegister(destination); |
- if (cgen_->IsInteger32(constant_source)) { |
+ if (cgen_->IsSmi(constant_source)) { |
+ __ li(dst, Operand(cgen_->ToSmi(constant_source))); |
+ } else if (cgen_->IsInteger32(constant_source)) { |
__ li(dst, Operand(cgen_->ToInteger32(constant_source))); |
} else { |
__ LoadObject(dst, cgen_->ToHandle(constant_source)); |
@@ -260,7 +262,9 @@ void LGapResolver::EmitMove(int index) { |
} else { |
ASSERT(destination->IsStackSlot()); |
ASSERT(!in_cycle_); // Constant moves happen after all cycles are gone. |
- if (cgen_->IsInteger32(constant_source)) { |
+ if (cgen_->IsSmi(constant_source)) { |
+ __ li(kLithiumScratchReg, Operand(cgen_->ToSmi(constant_source))); |
+ } else if (cgen_->IsInteger32(constant_source)) { |
__ li(kLithiumScratchReg, |
Operand(cgen_->ToInteger32(constant_source))); |
} else { |