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 #ifndef V8_X64_MACRO_ASSEMBLER_X64_H_ | 5 #ifndef V8_X64_MACRO_ASSEMBLER_X64_H_ |
6 #define V8_X64_MACRO_ASSEMBLER_X64_H_ | 6 #define V8_X64_MACRO_ASSEMBLER_X64_H_ |
7 | 7 |
8 #include "src/assembler.h" | 8 #include "src/assembler.h" |
9 #include "src/bailout-reason.h" | 9 #include "src/bailout-reason.h" |
10 #include "src/base/flags.h" | 10 #include "src/base/flags.h" |
(...skipping 1510 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1521 | 1521 |
1522 // Return and drop arguments from stack, where the number of arguments | 1522 // Return and drop arguments from stack, where the number of arguments |
1523 // may be bigger than 2^16 - 1. Requires a scratch register. | 1523 // may be bigger than 2^16 - 1. Requires a scratch register. |
1524 void Ret(int bytes_dropped, Register scratch); | 1524 void Ret(int bytes_dropped, Register scratch); |
1525 | 1525 |
1526 Handle<Object> CodeObject() { | 1526 Handle<Object> CodeObject() { |
1527 DCHECK(!code_object_.is_null()); | 1527 DCHECK(!code_object_.is_null()); |
1528 return code_object_; | 1528 return code_object_; |
1529 } | 1529 } |
1530 | 1530 |
1531 // Copy length bytes from source to destination. | |
1532 // Uses scratch register internally (if you have a low-eight register | |
1533 // free, do use it, otherwise kScratchRegister will be used). | |
1534 // The min_length is a minimum limit on the value that length will have. | |
1535 // The algorithm has some special cases that might be omitted if the string | |
1536 // is known to always be long. | |
1537 void CopyBytes(Register destination, | |
1538 Register source, | |
1539 Register length, | |
1540 int min_length = 0, | |
1541 Register scratch = kScratchRegister); | |
1542 | |
1543 // Initialize fields with filler values. Fields starting at |current_address| | 1531 // Initialize fields with filler values. Fields starting at |current_address| |
1544 // not including |end_address| are overwritten with the value in |filler|. At | 1532 // not including |end_address| are overwritten with the value in |filler|. At |
1545 // the end the loop, |current_address| takes the value of |end_address|. | 1533 // the end the loop, |current_address| takes the value of |end_address|. |
1546 void InitializeFieldsWithFiller(Register current_address, | 1534 void InitializeFieldsWithFiller(Register current_address, |
1547 Register end_address, Register filler); | 1535 Register end_address, Register filler); |
1548 | 1536 |
1549 | 1537 |
1550 // Emit code for a truncating division by a constant. The dividend register is | 1538 // Emit code for a truncating division by a constant. The dividend register is |
1551 // unchanged, the result is in rdx, and rax gets clobbered. | 1539 // unchanged, the result is in rdx, and rax gets clobbered. |
1552 void TruncatingDiv(Register dividend, int32_t divisor); | 1540 void TruncatingDiv(Register dividend, int32_t divisor); |
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1780 inline Operand StackOperandForReturnAddress(int32_t disp) { | 1768 inline Operand StackOperandForReturnAddress(int32_t disp) { |
1781 return Operand(rsp, disp); | 1769 return Operand(rsp, disp); |
1782 } | 1770 } |
1783 | 1771 |
1784 #define ACCESS_MASM(masm) masm-> | 1772 #define ACCESS_MASM(masm) masm-> |
1785 | 1773 |
1786 } // namespace internal | 1774 } // namespace internal |
1787 } // namespace v8 | 1775 } // namespace v8 |
1788 | 1776 |
1789 #endif // V8_X64_MACRO_ASSEMBLER_X64_H_ | 1777 #endif // V8_X64_MACRO_ASSEMBLER_X64_H_ |
OLD | NEW |