| 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_ASSEMBLER_ARM64_H_ | 5 #ifndef V8_ARM64_ASSEMBLER_ARM64_H_ |
| 6 #define V8_ARM64_ASSEMBLER_ARM64_H_ | 6 #define V8_ARM64_ASSEMBLER_ARM64_H_ |
| 7 | 7 |
| 8 #include <deque> | 8 #include <deque> |
| 9 #include <list> | 9 #include <list> |
| 10 #include <map> | 10 #include <map> |
| (...skipping 781 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 792 // Record relocation information for current pc_. | 792 // Record relocation information for current pc_. |
| 793 void RecordRelocInfo(RelocInfo::Mode rmode, intptr_t data = 0); | 793 void RecordRelocInfo(RelocInfo::Mode rmode, intptr_t data = 0); |
| 794 | 794 |
| 795 // Return the address in the constant pool of the code target address used by | 795 // Return the address in the constant pool of the code target address used by |
| 796 // the branch/call instruction at pc. | 796 // the branch/call instruction at pc. |
| 797 inline static Address target_pointer_address_at(Address pc); | 797 inline static Address target_pointer_address_at(Address pc); |
| 798 | 798 |
| 799 // Read/Modify the code target address in the branch/call instruction at pc. | 799 // Read/Modify the code target address in the branch/call instruction at pc. |
| 800 inline static Address target_address_at(Address pc, Address constant_pool); | 800 inline static Address target_address_at(Address pc, Address constant_pool); |
| 801 inline static void set_target_address_at( | 801 inline static void set_target_address_at( |
| 802 Address pc, Address constant_pool, Address target, | 802 Isolate* isolate, Address pc, Address constant_pool, Address target, |
| 803 ICacheFlushMode icache_flush_mode = FLUSH_ICACHE_IF_NEEDED); | 803 ICacheFlushMode icache_flush_mode = FLUSH_ICACHE_IF_NEEDED); |
| 804 static inline Address target_address_at(Address pc, Code* code); | 804 static inline Address target_address_at(Address pc, Code* code); |
| 805 static inline void set_target_address_at(Address pc, | 805 static inline void set_target_address_at( |
| 806 Code* code, | 806 Isolate* isolate, Address pc, Code* code, Address target, |
| 807 Address target, | 807 ICacheFlushMode icache_flush_mode = FLUSH_ICACHE_IF_NEEDED); |
| 808 ICacheFlushMode icache_flush_mode = | |
| 809 FLUSH_ICACHE_IF_NEEDED); | |
| 810 | 808 |
| 811 // Return the code target address at a call site from the return address of | 809 // Return the code target address at a call site from the return address of |
| 812 // that call in the instruction stream. | 810 // that call in the instruction stream. |
| 813 inline static Address target_address_from_return_address(Address pc); | 811 inline static Address target_address_from_return_address(Address pc); |
| 814 | 812 |
| 815 // Given the address of the beginning of a call, return the address in the | 813 // Given the address of the beginning of a call, return the address in the |
| 816 // instruction stream that call will return from. | 814 // instruction stream that call will return from. |
| 817 inline static Address return_address_from_call_start(Address pc); | 815 inline static Address return_address_from_call_start(Address pc); |
| 818 | 816 |
| 819 // This sets the branch destination (which is in the constant pool on ARM). | 817 // This sets the branch destination (which is in the constant pool on ARM). |
| 820 // This is for calls and branches within generated code. | 818 // This is for calls and branches within generated code. |
| 821 inline static void deserialization_set_special_target_at( | 819 inline static void deserialization_set_special_target_at( |
| 822 Address constant_pool_entry, Code* code, Address target); | 820 Isolate* isolate, Address constant_pool_entry, Code* code, |
| 821 Address target); |
| 823 | 822 |
| 824 // This sets the internal reference at the pc. | 823 // This sets the internal reference at the pc. |
| 825 inline static void deserialization_set_target_internal_reference_at( | 824 inline static void deserialization_set_target_internal_reference_at( |
| 826 Address pc, Address target, | 825 Isolate* isolate, Address pc, Address target, |
| 827 RelocInfo::Mode mode = RelocInfo::INTERNAL_REFERENCE); | 826 RelocInfo::Mode mode = RelocInfo::INTERNAL_REFERENCE); |
| 828 | 827 |
| 829 // All addresses in the constant pool are the same size as pointers. | 828 // All addresses in the constant pool are the same size as pointers. |
| 830 static const int kSpecialTargetSize = kPointerSize; | 829 static const int kSpecialTargetSize = kPointerSize; |
| 831 | 830 |
| 832 // The sizes of the call sequences emitted by MacroAssembler::Call. | 831 // The sizes of the call sequences emitted by MacroAssembler::Call. |
| 833 // Wherever possible, use MacroAssembler::CallSize instead of these constants, | 832 // Wherever possible, use MacroAssembler::CallSize instead of these constants, |
| 834 // as it will choose the correct value for a given relocation mode. | 833 // as it will choose the correct value for a given relocation mode. |
| 835 // | 834 // |
| 836 // Without relocation: | 835 // Without relocation: |
| (...skipping 1349 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2186 public: | 2185 public: |
| 2187 explicit EnsureSpace(Assembler* assembler) { | 2186 explicit EnsureSpace(Assembler* assembler) { |
| 2188 assembler->CheckBufferSpace(); | 2187 assembler->CheckBufferSpace(); |
| 2189 } | 2188 } |
| 2190 }; | 2189 }; |
| 2191 | 2190 |
| 2192 } // namespace internal | 2191 } // namespace internal |
| 2193 } // namespace v8 | 2192 } // namespace v8 |
| 2194 | 2193 |
| 2195 #endif // V8_ARM64_ASSEMBLER_ARM64_H_ | 2194 #endif // V8_ARM64_ASSEMBLER_ARM64_H_ |
| OLD | NEW |