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 #include "src/compiler/code-generator.h" | 5 #include "src/compiler/code-generator.h" |
6 | 6 |
7 #include "src/compiler/code-generator-impl.h" | 7 #include "src/compiler/code-generator-impl.h" |
8 #include "src/compiler/gap-resolver.h" | 8 #include "src/compiler/gap-resolver.h" |
9 #include "src/compiler/node-matchers.h" | 9 #include "src/compiler/node-matchers.h" |
10 #include "src/compiler/node-properties-inl.h" | 10 #include "src/compiler/node-properties-inl.h" |
(...skipping 877 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
888 break; | 888 break; |
889 case Constant::kHeapObject: | 889 case Constant::kHeapObject: |
890 __ Move(dst, src.ToHeapObject()); | 890 __ Move(dst, src.ToHeapObject()); |
891 break; | 891 break; |
892 } | 892 } |
893 if (destination->IsStackSlot()) { | 893 if (destination->IsStackSlot()) { |
894 __ movq(g.ToOperand(destination), kScratchRegister); | 894 __ movq(g.ToOperand(destination), kScratchRegister); |
895 } | 895 } |
896 } else if (src.type() == Constant::kFloat32) { | 896 } else if (src.type() == Constant::kFloat32) { |
897 // TODO(turbofan): Can we do better here? | 897 // TODO(turbofan): Can we do better here? |
898 __ movl(kScratchRegister, Immediate(bit_cast<int32_t>(src.ToFloat32()))); | 898 uint32_t src_const = bit_cast<uint32_t>(src.ToFloat32()); |
899 if (destination->IsDoubleRegister()) { | 899 if (destination->IsDoubleRegister()) { |
900 XMMRegister dst = g.ToDoubleRegister(destination); | 900 __ Move(g.ToDoubleRegister(destination), src_const); |
901 __ movq(dst, kScratchRegister); | |
902 } else { | 901 } else { |
903 DCHECK(destination->IsDoubleStackSlot()); | 902 DCHECK(destination->IsDoubleStackSlot()); |
904 Operand dst = g.ToOperand(destination); | 903 Operand dst = g.ToOperand(destination); |
905 __ movl(dst, kScratchRegister); | 904 __ movl(dst, Immediate(src_const)); |
906 } | 905 } |
907 } else { | 906 } else { |
908 DCHECK_EQ(Constant::kFloat64, src.type()); | 907 DCHECK_EQ(Constant::kFloat64, src.type()); |
909 __ movq(kScratchRegister, bit_cast<int64_t>(src.ToFloat64())); | 908 uint64_t src_const = bit_cast<uint64_t>(src.ToFloat64()); |
910 if (destination->IsDoubleRegister()) { | 909 if (destination->IsDoubleRegister()) { |
911 __ movq(g.ToDoubleRegister(destination), kScratchRegister); | 910 __ Move(g.ToDoubleRegister(destination), src_const); |
912 } else { | 911 } else { |
913 DCHECK(destination->IsDoubleStackSlot()); | 912 DCHECK(destination->IsDoubleStackSlot()); |
| 913 __ movq(kScratchRegister, src_const); |
914 __ movq(g.ToOperand(destination), kScratchRegister); | 914 __ movq(g.ToOperand(destination), kScratchRegister); |
915 } | 915 } |
916 } | 916 } |
917 } else if (source->IsDoubleRegister()) { | 917 } else if (source->IsDoubleRegister()) { |
918 XMMRegister src = g.ToDoubleRegister(source); | 918 XMMRegister src = g.ToDoubleRegister(source); |
919 if (destination->IsDoubleRegister()) { | 919 if (destination->IsDoubleRegister()) { |
920 XMMRegister dst = g.ToDoubleRegister(destination); | 920 XMMRegister dst = g.ToDoubleRegister(destination); |
921 __ movsd(dst, src); | 921 __ movsd(dst, src); |
922 } else { | 922 } else { |
923 DCHECK(destination->IsDoubleStackSlot()); | 923 DCHECK(destination->IsDoubleStackSlot()); |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1002 } | 1002 } |
1003 } | 1003 } |
1004 MarkLazyDeoptSite(); | 1004 MarkLazyDeoptSite(); |
1005 } | 1005 } |
1006 | 1006 |
1007 #undef __ | 1007 #undef __ |
1008 | 1008 |
1009 } // namespace internal | 1009 } // namespace internal |
1010 } // namespace compiler | 1010 } // namespace compiler |
1011 } // namespace v8 | 1011 } // namespace v8 |
OLD | NEW |