Index: src/ia32/lithium-gap-resolver-ia32.cc |
diff --git a/src/ia32/lithium-gap-resolver-ia32.cc b/src/ia32/lithium-gap-resolver-ia32.cc |
index 86bfe2fbf28f7279533222ba770a026b0c9f3816..505ce60aca7441969999eb0c22efc3310a2c4ebc 100644 |
--- a/src/ia32/lithium-gap-resolver-ia32.cc |
+++ b/src/ia32/lithium-gap-resolver-ia32.cc |
@@ -342,10 +342,10 @@ void LGapResolver::EmitMove(int index) { |
} else { |
// load from the register onto the stack, store in destination, which must |
// be a double stack slot in the non-SSE2 case. |
- ASSERT(source->index() == 0); // source is on top of the stack |
ASSERT(destination->IsDoubleStackSlot()); |
Operand dst = cgen_->ToOperand(destination); |
- cgen_->ReadX87Operand(dst); |
+ X87Register src = cgen_->ToX87Register(source); |
+ cgen_->X87Mov(dst, src); |
} |
} else if (source->IsDoubleStackSlot()) { |
if (CpuFeatures::IsSupported(SSE2)) { |
@@ -378,10 +378,8 @@ void LGapResolver::EmitMove(int index) { |
__ mov(dst1, tmp); |
} else { |
Operand src = cgen_->ToOperand(source); |
- if (cgen_->X87StackNonEmpty()) { |
- cgen_->PopX87(); |
- } |
- cgen_->PushX87DoubleOperand(src); |
+ X87Register dst = cgen_->ToX87Register(destination); |
+ cgen_->X87Mov(dst, src); |
} |
} |
} else { |