Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Static Public Attributes | List of all members
dart::PcRelativeCallPattern Class Reference

#include <instructions_arm.h>

Inheritance diagram for dart::PcRelativeCallPattern:
dart::PcRelativeCallPatternBase dart::PcRelativePatternBase dart::PcRelativePatternBase dart::InstructionPattern< PcRelativeCallPattern > dart::ValueObject dart::AllStatic dart::ValueObject dart::AllStatic dart::AllStatic dart::ValueObject dart::ValueObject dart::ValueObject dart::ValueObject dart::ValueObject

Public Member Functions

 PcRelativeCallPattern (uword pc)
 
bool IsValid () const
 
 PcRelativeCallPattern (uword pc)
 
bool IsValid () const
 
 PcRelativeCallPattern (uword pc)
 
bool IsValid () const
 
 PcRelativeCallPattern (uword pc)
 
int32_t distance ()
 
void set_distance (int32_t distance)
 
- Public Member Functions inherited from dart::PcRelativeCallPatternBase
 PcRelativeCallPatternBase (uword pc)
 
int32_t distance ()
 
void set_distance (int32_t distance)
 
- Public Member Functions inherited from dart::ValueObject
 ValueObject ()
 
 ~ValueObject ()
 
- Public Member Functions inherited from dart::PcRelativePatternBase
 PcRelativePatternBase (uword pc)
 
int32_t distance ()
 
void set_distance (int32_t distance)
 
bool IsValid () const
 
 PcRelativePatternBase (uword pc)
 
int32_t distance ()
 
void set_distance (int32_t distance)
 
bool IsValid () const
 
- Public Member Functions inherited from dart::InstructionPattern< PcRelativeCallPattern >
 InstructionPattern (uword pc)
 
 InstructionPattern (uword pc)
 
bool IsValid () const
 
bool IsValid () const
 

Static Public Member Functions

static const intpattern ()
 
static int pattern_length_in_bytes ()
 
- Static Public Member Functions inherited from dart::InstructionPattern< PcRelativeCallPattern >
static uword DecodeLoadWordImmediate (uword end, Register *reg, intptr_t *value)
 
static uword DecodeLoadWordImmediate (uword end, Register *reg, intptr_t *value)
 
static uword DecodeLoadWordImmediate (uword end, Register *reg, intptr_t *value)
 
static void EncodeLoadWordImmediate (uword end, Register reg, intptr_t value)
 
static uword DecodeLoadWordFromPool (uword end, Register *reg, intptr_t *index)
 
static uword DecodeLoadWordFromPool (uword end, Register *reg, intptr_t *index)
 
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 void EncodeLoadWordFromPoolFixed (uword end, int32_t offset)
 

Static Public Attributes

static constexpr int kLengthInBytes = 5
 
static constexpr int32_t kLowerCallingRange
 
static constexpr int32_t kUpperCallingRange
 
- Static Public Attributes inherited from dart::PcRelativeCallPatternBase
static constexpr intptr_t kLowerCallingRange
 
static constexpr intptr_t kUpperCallingRange
 
static constexpr int kLengthInBytes = 1 * Instr::kInstrSize
 
- Static Public Attributes inherited from dart::PcRelativePatternBase
static constexpr intptr_t kLowerCallingRange = -(1 << 27)
 
static constexpr intptr_t kUpperCallingRange = (1 << 27) - Instr::kInstrSize
 
static constexpr int kLengthInBytes = 1 * Instr::kInstrSize
 
static constexpr intptr_t kLengthInBytes = 8
 

Additional Inherited Members

- Protected Member Functions inherited from dart::InstructionPattern< PcRelativeCallPattern >
uword start () const
 
uword start () const
 
- Protected Attributes inherited from dart::PcRelativeCallPatternBase
uword pc_
 
- Protected Attributes inherited from dart::PcRelativePatternBase
uword pc_
 

Detailed Description

Definition at line 218 of file instructions_arm.h.

Constructor & Destructor Documentation

◆ PcRelativeCallPattern() [1/4]

dart::PcRelativeCallPattern::PcRelativeCallPattern ( uword  pc)
inlineexplicit

Definition at line 220 of file instructions_arm.h.

◆ PcRelativeCallPattern() [2/4]

dart::PcRelativeCallPattern::PcRelativeCallPattern ( uword  pc)
inlineexplicit

Definition at line 230 of file instructions_arm64.h.

◆ PcRelativeCallPattern() [3/4]

dart::PcRelativeCallPattern::PcRelativeCallPattern ( uword  pc)
inlineexplicit

Definition at line 221 of file instructions_riscv.h.

◆ PcRelativeCallPattern() [4/4]

dart::PcRelativeCallPattern::PcRelativeCallPattern ( uword  pc)
inlineexplicit

Member Function Documentation

◆ distance()

int32_t dart::PcRelativeCallPattern::distance ( )
inline

Definition at line 128 of file instructions_x64.h.

128 {
129 return LoadUnaligned(reinterpret_cast<int32_t*>(start() + 1)) +
131 }
static constexpr int kLengthInBytes
static T LoadUnaligned(const T *ptr)
Definition unaligned.h:14

◆ IsValid() [1/3]

bool dart::PcRelativeCallPattern::IsValid ( ) const

◆ IsValid() [2/3]

bool dart::PcRelativeCallPattern::IsValid ( ) const

◆ IsValid() [3/3]

bool dart::PcRelativeCallPattern::IsValid ( ) const

◆ pattern()

static const int * dart::PcRelativeCallPattern::pattern ( )
inlinestatic

Definition at line 140 of file instructions_x64.h.

140 {
141 static const int kPattern[kLengthInBytes] = {0xe8, -1, -1, -1, -1};
142 return kPattern;
143 }

◆ pattern_length_in_bytes()

static int dart::PcRelativeCallPattern::pattern_length_in_bytes ( )
inlinestatic

Definition at line 145 of file instructions_x64.h.

145{ return kLengthInBytes; }

◆ set_distance()

void dart::PcRelativeCallPattern::set_distance ( int32_t  distance)
inline

Definition at line 133 of file instructions_x64.h.

133 {
134 // [distance] is relative to the start of the instruction, x64 considers the
135 // offset relative to next PC.
136 StoreUnaligned(reinterpret_cast<int32_t*>(start() + 1),
138 }
static void StoreUnaligned(T *ptr, T value)
Definition unaligned.h:22

Member Data Documentation

◆ kLengthInBytes

constexpr int dart::PcRelativeCallPattern::kLengthInBytes = 5
staticconstexpr

Definition at line 115 of file instructions_x64.h.

◆ kLowerCallingRange

constexpr int32_t dart::PcRelativeCallPattern::kLowerCallingRange
staticconstexpr
Initial value:
=
std::numeric_limits<int32_t>::min() + kLengthInBytes

Definition at line 121 of file instructions_x64.h.

◆ kUpperCallingRange

constexpr int32_t dart::PcRelativeCallPattern::kUpperCallingRange
staticconstexpr
Initial value:
=
std::numeric_limits<int32_t>::max()

Definition at line 123 of file instructions_x64.h.


The documentation for this class was generated from the following files: