6#ifndef RUNTIME_VM_INSTRUCTIONS_ARM64_H_
7#define RUNTIME_VM_INSTRUCTIONS_ARM64_H_
9#ifndef RUNTIME_VM_INSTRUCTIONS_H_
10#error Do not include instructions_arm64.h directly; use instructions.h instead.
18#if !defined(DART_PRECOMPILED_RUNTIME)
29class InstructionPattern :
public AllStatic {
83 intptr_t target_code_pool_index_;
101 intptr_t target_pool_index_;
102 intptr_t data_pool_index_;
121 intptr_t native_function_pool_index_;
122 intptr_t target_code_pool_index_;
204#if !defined(DART_PRECOMPILED_RUNTIME)
206 *
reinterpret_cast<int32_t*
>(
pc_));
214#if !defined(DART_PRECOMPILED_RUNTIME)
215 int32_t*
word =
reinterpret_cast<int32_t*
>(
pc_);
260 : pattern_start_(pattern_start) {
279 static constexpr uint32_t kAdrEncoding = (1 << 28) | (
TMP <<
kRdShift);
285 static constexpr uint32_t kAddTmpTmp2 = 0x8b31c210;
288 static constexpr uint32_t kJumpEncoding =
BR | (
TMP <<
kRnShift);
290 uword pattern_start_;
uword target_entry() const
BareSwitchableCallPattern(uword pc)
void SetTarget(const Code &target) const
CallPattern(uword pc, const Code &code)
CodePtr TargetCode() const
void SetTargetCode(const Code &target) const
void SetData(const Object &data) const
CodePtr TargetCode() const
ICCallPattern(uword pc, const Code &caller_code)
void SetTargetCode(const Code &target) const
static uword DecodeLoadWordFromPool(uword end, Register *reg, intptr_t *index)
static uword DecodeLoadDoubleWordFromPool(uword end, Register *reg1, Register *reg2, intptr_t *index)
static void EncodeLoadWordFromPoolFixed(uword end, int32_t offset)
static uword DecodeLoadWordImmediate(uword end, Register *reg, intptr_t *value)
NativeCallPattern(uword pc, const Code &code)
NativeFunction native_function() const
void set_native_function(NativeFunction target) const
void set_target(const Code &target) const
PcRelativeCallPattern(uword pc)
static constexpr intptr_t kUpperCallingRange
static constexpr int kLengthInBytes
PcRelativePatternBase(uword pc)
static constexpr intptr_t kLowerCallingRange
void set_distance(int32_t distance)
PcRelativeTailCallPattern(uword pc)
void set_distance(int32_t distance)
PcRelativeTrampolineJumpPattern(uword pattern_start)
static constexpr int kLengthInBytes
static constexpr int kLengthInBytes
int pattern_length_in_bytes() const
void SetData(const Object &data) const
intptr_t target_pool_index_
intptr_t data_pool_index_
SwitchableCallPatternBase(const ObjectPool &object_pool)
const ObjectPool & object_pool_
void SetTarget(const Code &target) const
SwitchableCallPattern(uword pc, const Code &code)
uword target_entry() const
static int64_t DecodeImm26BranchOffset(int32_t instr)
static int32_t EncodeImm26BranchOffset(int64_t imm, int32_t instr)
static int8_t data[kExtLength]
void(* NativeFunction)(NativeArguments *arguments)