Index: src/x64/codegen-x64.cc |
diff --git a/src/x64/codegen-x64.cc b/src/x64/codegen-x64.cc |
index b4568237ae385645b5c1e22005d021e32400b9e7..b1f2b8fbceb137db45c6510ea347bcfce6393b04 100644 |
--- a/src/x64/codegen-x64.cc |
+++ b/src/x64/codegen-x64.cc |
@@ -5644,7 +5644,7 @@ void CompareStub::Generate(MacroAssembler* masm) { |
// The representation of NaN values has all exponent bits (52..62) set, |
// and not all mantissa bits (0..51) clear. |
// Read double representation into rax. |
- __ movq(rbx, 0x7ff0000000000000, RelocInfo::NONE); |
+ __ movq(rbx, V8_UINT64_C(0x7ff0000000000000), RelocInfo::NONE); |
__ movq(rax, FieldOperand(rdx, HeapNumber::kValueOffset)); |
// Test that exponent bits are all set. |
__ or_(rbx, rax); |
@@ -5655,10 +5655,7 @@ void CompareStub::Generate(MacroAssembler* masm) { |
// If all bits in the mantissa are zero the number is Infinity, and |
// we return zero. Otherwise it is a NaN, and we return non-zero. |
// We cannot just return rax because only eax is tested on return. |
- // TODO(X64): Solve this using movcc, when implemented. |
- __ movq(kScratchRegister, rax); |
- __ shr(kScratchRegister, Immediate(32)); |
- __ or_(rax, kScratchRegister); |
+ __ setcc(not_zero, rax); |
__ ret(0); |
__ bind(¬_identical); |