diff options
Diffstat (limited to 'deps/v8/src/x87/lithium-gap-resolver-x87.cc')
-rw-r--r-- | deps/v8/src/x87/lithium-gap-resolver-x87.cc | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/deps/v8/src/x87/lithium-gap-resolver-x87.cc b/deps/v8/src/x87/lithium-gap-resolver-x87.cc index e25c78c993..6a6427550c 100644 --- a/deps/v8/src/x87/lithium-gap-resolver-x87.cc +++ b/deps/v8/src/x87/lithium-gap-resolver-x87.cc @@ -292,7 +292,7 @@ void LGapResolver::EmitMove(int index) { } } else if (destination->IsDoubleRegister()) { double v = cgen_->ToDouble(constant_source); - uint64_t int_val = BitCast<uint64_t, double>(v); + uint64_t int_val = bit_cast<uint64_t, double>(v); int32_t lower = static_cast<int32_t>(int_val); int32_t upper = static_cast<int32_t>(int_val >> kBitsPerInt); __ push(Immediate(upper)); @@ -317,10 +317,15 @@ void LGapResolver::EmitMove(int index) { } else if (source->IsDoubleRegister()) { // load from the register onto the stack, store in destination, which must // be a double stack slot in the non-SSE2 case. - DCHECK(destination->IsDoubleStackSlot()); - Operand dst = cgen_->ToOperand(destination); - X87Register src = cgen_->ToX87Register(source); - cgen_->X87Mov(dst, src); + if (destination->IsDoubleStackSlot()) { + Operand dst = cgen_->ToOperand(destination); + X87Register src = cgen_->ToX87Register(source); + cgen_->X87Mov(dst, src); + } else { + X87Register dst = cgen_->ToX87Register(destination); + X87Register src = cgen_->ToX87Register(source); + cgen_->X87Mov(dst, src); + } } else if (source->IsDoubleStackSlot()) { // load from the stack slot on top of the floating point stack, and then // store in destination. If destination is a double register, then it |