| 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 // CpuFeatures::FlushICache(pc, sizeof(target)); | 668 // Assembler::FlushICacheWithoutIsolate(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 576 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1255 | 1255 |
| 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 v8::internal | 1262 } } // namespace v8::internal |
| 1263 | 1263 |
| 1264 #endif // V8_ARM64_ASSEMBLER_ARM64_INL_H_ | 1264 #endif // V8_ARM64_ASSEMBLER_ARM64_INL_H_ |
| OLD | NEW |