| OLD | NEW | 
|---|
| 1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #if V8_TARGET_ARCH_X64 | 5 #if V8_TARGET_ARCH_X64 | 
| 6 | 6 | 
| 7 #include "src/base/bits.h" | 7 #include "src/base/bits.h" | 
| 8 #include "src/code-factory.h" | 8 #include "src/code-factory.h" | 
| 9 #include "src/code-stubs.h" | 9 #include "src/code-stubs.h" | 
| 10 #include "src/hydrogen-osr.h" | 10 #include "src/hydrogen-osr.h" | 
| (...skipping 4756 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 4767   // Load value into temp_xmm which will be preserved across potential call to | 4767   // Load value into temp_xmm which will be preserved across potential call to | 
| 4768   // runtime (MacroAssembler::EnterExitFrameEpilogue preserves only allocatable | 4768   // runtime (MacroAssembler::EnterExitFrameEpilogue preserves only allocatable | 
| 4769   // XMM registers on x64). | 4769   // XMM registers on x64). | 
| 4770   if (signedness == SIGNED_INT32) { | 4770   if (signedness == SIGNED_INT32) { | 
| 4771     DCHECK(SmiValuesAre31Bits()); | 4771     DCHECK(SmiValuesAre31Bits()); | 
| 4772     // There was overflow, so bits 30 and 31 of the original integer | 4772     // There was overflow, so bits 30 and 31 of the original integer | 
| 4773     // disagree. Try to allocate a heap number in new space and store | 4773     // disagree. Try to allocate a heap number in new space and store | 
| 4774     // the value in there. If that fails, call the runtime system. | 4774     // the value in there. If that fails, call the runtime system. | 
| 4775     __ SmiToInteger32(reg, reg); | 4775     __ SmiToInteger32(reg, reg); | 
| 4776     __ xorl(reg, Immediate(0x80000000)); | 4776     __ xorl(reg, Immediate(0x80000000)); | 
| 4777     __ cvtlsi2sd(temp_xmm, reg); | 4777     __ Cvtlsi2sd(temp_xmm, reg); | 
| 4778   } else { | 4778   } else { | 
| 4779     DCHECK(signedness == UNSIGNED_INT32); | 4779     DCHECK(signedness == UNSIGNED_INT32); | 
| 4780     __ LoadUint32(temp_xmm, reg); | 4780     __ LoadUint32(temp_xmm, reg); | 
| 4781   } | 4781   } | 
| 4782 | 4782 | 
| 4783   if (FLAG_inline_new) { | 4783   if (FLAG_inline_new) { | 
| 4784     __ AllocateHeapNumber(reg, tmp, &slow); | 4784     __ AllocateHeapNumber(reg, tmp, &slow); | 
| 4785     __ jmp(&done, kPointerSize == kInt64Size ? Label::kNear : Label::kFar); | 4785     __ jmp(&done, kPointerSize == kInt64Size ? Label::kNear : Label::kFar); | 
| 4786   } | 4786   } | 
| 4787 | 4787 | 
| (...skipping 1117 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 5905   RecordSafepoint(Safepoint::kNoLazyDeopt); | 5905   RecordSafepoint(Safepoint::kNoLazyDeopt); | 
| 5906 } | 5906 } | 
| 5907 | 5907 | 
| 5908 | 5908 | 
| 5909 #undef __ | 5909 #undef __ | 
| 5910 | 5910 | 
| 5911 }  // namespace internal | 5911 }  // namespace internal | 
| 5912 }  // namespace v8 | 5912 }  // namespace v8 | 
| 5913 | 5913 | 
| 5914 #endif  // V8_TARGET_ARCH_X64 | 5914 #endif  // V8_TARGET_ARCH_X64 | 
| OLD | NEW | 
|---|