37#ifndef V8_CODEGEN_ARM_ASSEMBLER_ARM_INL_H_
38#define V8_CODEGEN_ARM_ASSEMBLER_ARM_INL_H_
61 int32_t* p =
reinterpret_cast<int32_t*
>(
pc_);
144 return Memory<Address>(
pc_);
174 : rmode_(
RelocInfo::EXTERNAL_REFERENCE) {
257 if (jit_allocation) {
276 uint32_t* instr_ptr =
reinterpret_cast<uint32_t*
>(
pc);
277 uint32_t immediate =
static_cast<uint32_t
>(
target);
278 if (jit_allocation) {
280 reinterpret_cast<Address>(&instr_ptr[0]),
283 reinterpret_cast<Address>(&instr_ptr[1]),
301 uint32_t* instr_ptr =
reinterpret_cast<uint32_t*
>(
pc);
302 uint32_t immediate =
static_cast<uint32_t
>(
target);
303 if (jit_allocation) {
305 reinterpret_cast<Address>(&instr_ptr[0]),
308 reinterpret_cast<Address>(&instr_ptr[1]),
311 reinterpret_cast<Address>(&instr_ptr[2]),
314 reinterpret_cast<Address>(&instr_ptr[3]),
345 uint32_t new_constant,
360 for (
int index = 0; index < T::kNumRegisters; index++) {
361 T
reg = T::from_code(index);
362 uint64_t
mask =
reg.ToVfpRegList();
374 for (
int index = 0; index < T::kNumRegisters; index++) {
375 T
reg = T::from_code(index);
376 uint64_t
mask =
reg.ToVfpRegList();
IndirectHandle< Code > GetCodeTarget(intptr_t code_target_index) const
static constexpr int kSpecialTargetSize
static void deserialization_set_target_internal_reference_at(Address pc, Address target, WritableJitAllocation &jit_allocation, RelocInfo::Mode mode=RelocInfo::INTERNAL_REFERENCE)
V8_INLINE Handle< Code > relative_code_target_object_handle_at(Address pc_) const
int branch_offset(Label *L)
static void set_uint32_constant_at(Address pc, Address constant_pool, uint32_t new_constant, WritableJitAllocation *jit_allocation, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED)
VfpRegList * GetScratchVfpRegisterList()
static bool IsMovImmed(Instr instr)
V8_INLINE void MaybeCheckConstPool()
static Instr PatchShiftImm(Instr instr, int immed)
static V8_INLINE Address constant_pool_entry_address(Address pc, Address constant_pool)
static constexpr int kGap
static bool IsMovW(Instr instr)
static V8_INLINE bool is_constant_pool_load(Address pc)
static bool IsMovT(Instr instr)
static V8_INLINE void set_target_address_at(Address pc, Address constant_pool, Address target, WritableJitAllocation *jit_allocation, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED)
static bool IsOrrImmed(Instr instr)
static int DecodeShiftImm(Instr instr)
static bool IsLdrPcImmediateOffset(Instr instr)
static int deserialization_special_target_size(Address location)
V8_INLINE void CheckBuffer()
static bool IsBOrBlPcImmediateOffset(Instr instr)
static Instr PatchMovwImmediate(Instr instruction, uint32_t immediate)
static V8_INLINE Address target_address_at(Address pc, Address constant_pool)
static int GetLdrRegisterImmediateOffset(Instr instr)
static uint32_t uint32_constant_at(Address pc, Address constant_pool)
static bool IsSupported(CpuFeature f)
static bool SupportsOptimizer()
static V8_INLINE DirectHandle FromSlot(Address *slot)
static int SupportedRegisterCount()
V8_INLINE EnsureSpace(Assembler *assembler)
V8_EXPORT_PRIVATE Address address() const
int ImmedMovwMovtValue() const
static constexpr int kPcLoadDelta
void SetBranchOffset(int32_t branch_offset, WritableJitAllocation *jit_allocation)
static Instruction * At(Address pc)
union v8::internal::Operand::Value value_
static V8_INLINE Operand Zero()
V8_INLINE Operand(int32_t immediate, RelocInfo::Mode rmode=RelocInfo::NO_INFO)
V8_INLINE Address target_internal_reference()
static constexpr bool IsInternalReference(Mode mode)
static constexpr bool IsOffHeapTarget(Mode mode)
static constexpr bool IsRelativeCodeTarget(Mode mode)
static constexpr bool IsCodeTargetMode(Mode mode)
V8_INLINE Address target_address()
V8_INLINE Address target_internal_reference_address()
static constexpr bool IsCodeTarget(Mode mode)
static constexpr bool IsWasmCall(Mode mode)
V8_INLINE int target_address_size()
V8_INLINE Builtin target_builtin_at(Assembler *origin)
V8_INLINE WasmCodePointer wasm_code_pointer_table_entry() const
V8_INLINE Address target_off_heap_target()
static constexpr bool IsWasmStubCall(Mode mode)
V8_INLINE Address target_external_reference()
V8_INLINE Tagged< HeapObject > target_object(PtrComprCageBase cage_base)
V8_INLINE Address constant_pool_entry_address()
V8_INLINE JSDispatchHandle js_dispatch_handle()
V8_INLINE DirectHandle< HeapObject > target_object_handle(Assembler *origin)
static constexpr bool IsFullEmbeddedObject(Mode mode)
@ WASM_CODE_POINTER_TABLE_ENTRY
bool HasTargetAddressAddress() const
V8_INLINE Address target_address_address()
bool CanAcquireVfp() const
V8_INLINE void WriteValue(Address address, T value)
V8_INLINE void set_target_object(Tagged< InstructionStream > host, Tagged< HeapObject > target, WriteBarrierMode write_barrier_mode=UPDATE_WRITE_BARRIER, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED)
WritableJitAllocation & jit_allocation_
V8_INLINE void set_wasm_code_pointer_table_entry(WasmCodePointer, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED)
V8_INLINE void apply(intptr_t delta)
V8_INLINE void set_target_external_reference(Address, ICacheFlushMode icache_flush_mode=FLUSH_ICACHE_IF_NEEDED)
constexpr int kPointerSize
void FlushInstructionCache(void *start, size_t size)
base::StrongAlias< JSDispatchHandleAliasTag, uint32_t > JSDispatchHandle
constexpr uint8_t kInstrSize
Tagged< To > Cast(Tagged< From > value, const v8::SourceLocation &loc=INIT_SOURCE_LOCATION_IN_DEBUG)
#define DCHECK_NOT_NULL(val)
#define DCHECK(condition)
#define V8_UNLIKELY(condition)