OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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/x64/assembler-x64.h" | 5 #include "src/x64/assembler-x64.h" |
6 | 6 |
7 #include <cstring> | 7 #include <cstring> |
8 | 8 |
9 #if V8_TARGET_ARCH_X64 | 9 #if V8_TARGET_ARCH_X64 |
10 | 10 |
(...skipping 1451 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1462 } | 1462 } |
1463 | 1463 |
1464 | 1464 |
1465 void Assembler::movp(Register dst, void* value, RelocInfo::Mode rmode) { | 1465 void Assembler::movp(Register dst, void* value, RelocInfo::Mode rmode) { |
1466 EnsureSpace ensure_space(this); | 1466 EnsureSpace ensure_space(this); |
1467 emit_rex(dst, kPointerSize); | 1467 emit_rex(dst, kPointerSize); |
1468 emit(0xB8 | dst.low_bits()); | 1468 emit(0xB8 | dst.low_bits()); |
1469 emitp(value, rmode); | 1469 emitp(value, rmode); |
1470 } | 1470 } |
1471 | 1471 |
1472 | 1472 void Assembler::movq(Register dst, int64_t value, RelocInfo::Mode rmode) { |
1473 void Assembler::movq(Register dst, int64_t value) { | |
1474 EnsureSpace ensure_space(this); | 1473 EnsureSpace ensure_space(this); |
1475 emit_rex_64(dst); | 1474 emit_rex_64(dst); |
1476 emit(0xB8 | dst.low_bits()); | 1475 emit(0xB8 | dst.low_bits()); |
| 1476 if (!RelocInfo::IsNone(rmode)) { |
| 1477 RecordRelocInfo(rmode, value); |
| 1478 } |
1477 emitq(value); | 1479 emitq(value); |
1478 } | 1480 } |
1479 | 1481 |
1480 | 1482 void Assembler::movq(Register dst, uint64_t value, RelocInfo::Mode rmode) { |
1481 void Assembler::movq(Register dst, uint64_t value) { | 1483 movq(dst, static_cast<int64_t>(value), rmode); |
1482 movq(dst, static_cast<int64_t>(value)); | |
1483 } | 1484 } |
1484 | 1485 |
1485 | 1486 |
1486 // Loads the ip-relative location of the src label into the target location | 1487 // Loads the ip-relative location of the src label into the target location |
1487 // (as a 32-bit offset sign extended to 64-bit). | 1488 // (as a 32-bit offset sign extended to 64-bit). |
1488 void Assembler::movl(const Operand& dst, Label* src) { | 1489 void Assembler::movl(const Operand& dst, Label* src) { |
1489 EnsureSpace ensure_space(this); | 1490 EnsureSpace ensure_space(this); |
1490 emit_optional_rex_32(dst); | 1491 emit_optional_rex_32(dst); |
1491 emit(0xC7); | 1492 emit(0xC7); |
1492 emit_operand(0, dst); | 1493 emit_operand(0, dst); |
(...skipping 2656 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4149 | 4150 |
4150 bool RelocInfo::IsInConstantPool() { | 4151 bool RelocInfo::IsInConstantPool() { |
4151 return false; | 4152 return false; |
4152 } | 4153 } |
4153 | 4154 |
4154 | 4155 |
4155 } // namespace internal | 4156 } // namespace internal |
4156 } // namespace v8 | 4157 } // namespace v8 |
4157 | 4158 |
4158 #endif // V8_TARGET_ARCH_X64 | 4159 #endif // V8_TARGET_ARCH_X64 |
OLD | NEW |