| 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 #ifndef V8_ARM64_MACRO_ASSEMBLER_ARM64_H_ | 5 #ifndef V8_ARM64_MACRO_ASSEMBLER_ARM64_H_ |
| 6 #define V8_ARM64_MACRO_ASSEMBLER_ARM64_H_ | 6 #define V8_ARM64_MACRO_ASSEMBLER_ARM64_H_ |
| 7 | 7 |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "src/globals.h" | 10 #include "src/globals.h" |
| 11 | 11 |
| 12 #include "src/arm64/assembler-arm64-inl.h" | 12 #include "src/arm64/assembler-arm64-inl.h" |
| 13 #include "src/base/bits.h" |
| 13 | 14 |
| 14 // Simulator specific helpers. | 15 // Simulator specific helpers. |
| 15 #if USE_SIMULATOR | 16 #if USE_SIMULATOR |
| 16 // TODO(all): If possible automatically prepend an indicator like | 17 // TODO(all): If possible automatically prepend an indicator like |
| 17 // UNIMPLEMENTED or LOCATION. | 18 // UNIMPLEMENTED or LOCATION. |
| 18 #define ASM_UNIMPLEMENTED(message) \ | 19 #define ASM_UNIMPLEMENTED(message) \ |
| 19 __ Debug(message, __LINE__, NO_PARAM) | 20 __ Debug(message, __LINE__, NO_PARAM) |
| 20 #define ASM_UNIMPLEMENTED_BREAK(message) \ | 21 #define ASM_UNIMPLEMENTED_BREAK(message) \ |
| 21 __ Debug(message, __LINE__, \ | 22 __ Debug(message, __LINE__, \ |
| 22 FLAG_ignore_asm_unimplemented_break ? NO_PARAM : BREAK) | 23 FLAG_ignore_asm_unimplemented_break ? NO_PARAM : BREAK) |
| (...skipping 778 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 801 inline const Register& StackPointer() const { | 802 inline const Register& StackPointer() const { |
| 802 return sp_; | 803 return sp_; |
| 803 } | 804 } |
| 804 | 805 |
| 805 // Align csp for a frame, as per ActivationFrameAlignment, and make it the | 806 // Align csp for a frame, as per ActivationFrameAlignment, and make it the |
| 806 // current stack pointer. | 807 // current stack pointer. |
| 807 inline void AlignAndSetCSPForFrame() { | 808 inline void AlignAndSetCSPForFrame() { |
| 808 int sp_alignment = ActivationFrameAlignment(); | 809 int sp_alignment = ActivationFrameAlignment(); |
| 809 // AAPCS64 mandates at least 16-byte alignment. | 810 // AAPCS64 mandates at least 16-byte alignment. |
| 810 DCHECK(sp_alignment >= 16); | 811 DCHECK(sp_alignment >= 16); |
| 811 DCHECK(IsPowerOf2(sp_alignment)); | 812 DCHECK(base::bits::IsPowerOfTwo32(sp_alignment)); |
| 812 Bic(csp, StackPointer(), sp_alignment - 1); | 813 Bic(csp, StackPointer(), sp_alignment - 1); |
| 813 SetStackPointer(csp); | 814 SetStackPointer(csp); |
| 814 } | 815 } |
| 815 | 816 |
| 816 // Push the system stack pointer (csp) down to allow the same to be done to | 817 // Push the system stack pointer (csp) down to allow the same to be done to |
| 817 // the current stack pointer (according to StackPointer()). This must be | 818 // the current stack pointer (according to StackPointer()). This must be |
| 818 // called _before_ accessing the memory. | 819 // called _before_ accessing the memory. |
| 819 // | 820 // |
| 820 // This is necessary when pushing or otherwise adding things to the stack, to | 821 // This is necessary when pushing or otherwise adding things to the stack, to |
| 821 // satisfy the AAPCS64 constraint that the memory below the system stack | 822 // satisfy the AAPCS64 constraint that the memory below the system stack |
| (...skipping 1532 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2354 #error "Unsupported option" | 2355 #error "Unsupported option" |
| 2355 #define CODE_COVERAGE_STRINGIFY(x) #x | 2356 #define CODE_COVERAGE_STRINGIFY(x) #x |
| 2356 #define CODE_COVERAGE_TOSTRING(x) CODE_COVERAGE_STRINGIFY(x) | 2357 #define CODE_COVERAGE_TOSTRING(x) CODE_COVERAGE_STRINGIFY(x) |
| 2357 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) | 2358 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) |
| 2358 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> | 2359 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> |
| 2359 #else | 2360 #else |
| 2360 #define ACCESS_MASM(masm) masm-> | 2361 #define ACCESS_MASM(masm) masm-> |
| 2361 #endif | 2362 #endif |
| 2362 | 2363 |
| 2363 #endif // V8_ARM64_MACRO_ASSEMBLER_ARM64_H_ | 2364 #endif // V8_ARM64_MACRO_ASSEMBLER_ARM64_H_ |
| OLD | NEW |