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_INL_H_ | 5 #ifndef V8_ARM64_ASSEMBLER_ARM64_INL_H_ |
6 #define V8_ARM64_ASSEMBLER_ARM64_INL_H_ | 6 #define V8_ARM64_ASSEMBLER_ARM64_INL_H_ |
7 | 7 |
8 #include "src/arm64/assembler-arm64.h" | 8 #include "src/arm64/assembler-arm64.h" |
9 #include "src/assembler.h" | 9 #include "src/assembler.h" |
10 #include "src/debug/debug.h" | 10 #include "src/debug/debug.h" |
(...skipping 647 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
658 Memory::Address_at(pc) = target; | 658 Memory::Address_at(pc) = target; |
659 } | 659 } |
660 | 660 |
661 | 661 |
662 void Assembler::set_target_address_at(Address pc, Address constant_pool, | 662 void Assembler::set_target_address_at(Address pc, Address constant_pool, |
663 Address target, | 663 Address target, |
664 ICacheFlushMode icache_flush_mode) { | 664 ICacheFlushMode icache_flush_mode) { |
665 Memory::Address_at(target_pointer_address_at(pc)) = target; | 665 Memory::Address_at(target_pointer_address_at(pc)) = target; |
666 // Intuitively, we would think it is necessary to always flush the | 666 // Intuitively, we would think it is necessary to always flush the |
667 // instruction cache after patching a target address in the code as follows: | 667 // instruction cache after patching a target address in the code as follows: |
668 // Assembler::FlushICacheWithoutIsolate(pc, sizeof(target)); | 668 // Assembler::FlushICache(isolate(), pc, sizeof(target)); |
669 // However, on ARM, an instruction is actually patched in the case of | 669 // However, on ARM, an instruction is actually patched in the case of |
670 // embedded constants of the form: | 670 // embedded constants of the form: |
671 // ldr ip, [pc, #...] | 671 // ldr ip, [pc, #...] |
672 // since the instruction accessing this address in the constant pool remains | 672 // since the instruction accessing this address in the constant pool remains |
673 // unchanged, a flush is not required. | 673 // unchanged, a flush is not required. |
674 } | 674 } |
675 | 675 |
676 | 676 |
677 void Assembler::set_target_address_at(Address pc, | 677 void Assembler::set_target_address_at(Address pc, |
678 Code* code, | 678 Code* code, |
(...skipping 577 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1256 | 1256 |
1257 void Assembler::ClearRecordedAstId() { | 1257 void Assembler::ClearRecordedAstId() { |
1258 recorded_ast_id_ = TypeFeedbackId::None(); | 1258 recorded_ast_id_ = TypeFeedbackId::None(); |
1259 } | 1259 } |
1260 | 1260 |
1261 | 1261 |
1262 } // namespace internal | 1262 } // namespace internal |
1263 } // namespace v8 | 1263 } // namespace v8 |
1264 | 1264 |
1265 #endif // V8_ARM64_ASSEMBLER_ARM64_INL_H_ | 1265 #endif // V8_ARM64_ASSEMBLER_ARM64_INL_H_ |
OLD | NEW |