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 |