Flutter Engine
The Flutter Engine
Public Member Functions | Static Public Member Functions | List of all members
dart::compiler::FieldAddress Class Reference

#include <assembler_arm.h>

Inheritance diagram for dart::compiler::FieldAddress:
dart::compiler::Address dart::compiler::Address dart::compiler::Address dart::compiler::Address dart::compiler::Address dart::compiler::Operand dart::compiler::Operand dart::ValueObject dart::ValueObject dart::compiler::Operand dart::compiler::Operand dart::ValueObject dart::ValueObject dart::compiler::Operand dart::compiler::Operand dart::ValueObject dart::ValueObject dart::compiler::Operand dart::compiler::Operand dart::ValueObject dart::ValueObject dart::compiler::Operand dart::compiler::Operand dart::ValueObject dart::ValueObject

Public Member Functions

 FieldAddress (Register base, int32_t disp)
 
 FieldAddress (Register base, Register r)
 
 FieldAddress (const FieldAddress &other)
 
FieldAddressoperator= (const FieldAddress &other)
 
 FieldAddress (Register base, int32_t disp)
 
 FieldAddress (Register base, Register disp)=delete
 
 FieldAddress (const FieldAddress &other)
 
FieldAddressoperator= (const FieldAddress &other)
 
 FieldAddress (Register base, int32_t disp)
 
 FieldAddress (Register base, Register r)
 
 FieldAddress (Register base, Register index, ScaleFactor scale, int32_t disp)
 
 FieldAddress (Register base, Register index, ScaleFactor scale, Register r)
 
 FieldAddress (const FieldAddress &other)
 
FieldAddressoperator= (const FieldAddress &other)
 
 FieldAddress (Register base, intptr_t offset)
 
 FieldAddress (Register base, Register index)=delete
 
 FieldAddress (Register base, int32_t disp)
 
 FieldAddress (Register base, Register r)
 
 FieldAddress (Register base, Register index, ScaleFactor scale, int32_t disp)
 
 FieldAddress (Register base, Register index, ScaleFactor scale, Register r)
 
 FieldAddress (const FieldAddress &other)
 
FieldAddressoperator= (const FieldAddress &other)
 
- Public Member Functions inherited from dart::compiler::Address
 Address (const Address &other)
 
Addressoperator= (const Address &other)
 
bool Equals (const Address &other) const
 
 Address (Register rn, int32_t offset=0, Mode am=Offset)
 
 Address (Register rn, Register r, Mode am)
 
 Address (Register rn, Register rm, Shift shift=LSL, uint32_t shift_imm=0, Mode am=Offset)
 
 Address (Register rn, Register rm, Shift shift, Register r, Mode am=Offset)
 
 Address (const Address &other)
 
Addressoperator= (const Address &other)
 
bool can_writeback_to (Register r) const
 
 Address (Register rn, int32_t offset=0, AddressType at=Offset)
 
 Address (Register rn, Register offset, AddressType at)=delete
 
 Address (Register rn, Register rm, Extend ext=UXTX, Scaling scale=Unscaled)
 
 Address (Register base, int32_t disp)
 
 Address (Register index, ScaleFactor scale, int32_t disp)
 
 Address (Register index, ScaleFactor scale, Register r)
 
 Address (Register base, Register index, ScaleFactor scale, int32_t disp)
 
 Address (Register base, Register index, ScaleFactor scale, Register r)
 
 Address (const Address &other)
 
Addressoperator= (const Address &other)
 
 Address (Register base, intptr_t offset)
 
 Address (Register base)
 
 Address (Register base, Register index)=delete
 
Register base () const
 
intptr_t offset () const
 
 Address (Register base, int32_t disp)
 
 Address (Register base, Register r)
 
 Address (Register index, ScaleFactor scale, int32_t disp)
 
 Address (Register index, ScaleFactor scale, Register r)
 
 Address (Register base, Register index, ScaleFactor scale, int32_t disp)
 
 Address (Register base, Register index, ScaleFactor scale, Register r)
 
 Address (const Address &other)
 
Addressoperator= (const Address &other)
 
- Public Member Functions inherited from dart::ValueObject
 ValueObject ()
 
 ~ValueObject ()
 
- Public Member Functions inherited from dart::compiler::Operand
 Operand ()
 
 Operand (const Operand &other)
 
Operandoperator= (const Operand &other)
 
 Operand (uint32_t immediate)
 
 Operand (uint32_t rotate, uint32_t immed8)
 
 Operand (Register rm)
 
 Operand (Register rm, Shift shift, uint32_t shift_imm)
 
 Operand (Register rm, Shift shift, Register rs)
 
 Operand ()
 
 Operand (const Operand &other)
 
Operandoperator= (const Operand &other)
 
 Operand (Register rm)
 
 Operand (Register rm, Shift shift, int32_t imm)
 
 Operand (Register rm, Shift shift, Register r)
 
 Operand (Register rm, Extend extend, int32_t imm)
 
 Operand (Register rm, Extend extend, Register r)
 
 Operand (int32_t imm)
 
 Operand (uint8_t n, int8_t imm_s, int8_t imm_r)
 
uint8_t mod () const
 
Register rm () const
 
ScaleFactor scale () const
 
Register index () const
 
Register base () const
 
int8_t disp8 () const
 
int32_t disp32 () const
 
 Operand (const Operand &other)
 
Operandoperator= (const Operand &other)
 
bool Equals (const Operand &other) const
 
uint8_t rex () const
 
uint8_t mod () const
 
Register rm () const
 
ScaleFactor scale () const
 
Register index () const
 
Register base () const
 
int8_t disp8 () const
 
int32_t disp32 () const
 
 Operand (const Operand &other)
 
Operandoperator= (const Operand &other)
 
bool Equals (const Operand &other) const
 

Static Public Member Functions

static bool CanHoldOffset (int32_t offset, AddressType at=Offset, OperandSize sz=kEightBytes)
 
- Static Public Member Functions inherited from dart::compiler::Address
static OperandSize OperandSizeFor (intptr_t cid)
 
static bool CanHoldLoadOffset (OperandSize size, int32_t offset, int32_t *offset_mask)
 
static bool CanHoldStoreOffset (OperandSize size, int32_t offset, int32_t *offset_mask)
 
static bool CanHoldImmediateOffset (bool is_load, intptr_t cid, int64_t offset)
 
static bool CanHoldOffset (int32_t offset, AddressType at=Offset, OperandSize sz=kEightBytes)
 
static Address PC (int32_t pc_off)
 
static Address Pair (Register rn, int32_t offset=0, AddressType at=PairOffset)
 
static Address PC (Register r)=delete
 
static OperandSize OperandSizeFor (intptr_t cid)
 
static Address Absolute (const uword addr)
 
static Address AddressRIPRelative (int32_t disp)
 
static Address AddressBaseImm32 (Register base, int32_t disp)
 
static Address AddressBaseImm32 (Register base, Register r)
 
- Static Public Member Functions inherited from dart::compiler::Operand
static bool CanHold (uint32_t immediate, Operand *o)
 
static bool IsImmLogical (uint64_t value, uint8_t width, Operand *imm_op)
 
static OperandType CanHold (int64_t imm, uint8_t sz, Operand *op)
 

Additional Inherited Members

- Public Types inherited from dart::compiler::Address
enum  OffsetKind { Immediate , IndexRegister , ScaledIndexRegister }
 
enum  Mode {
  kModeMask = (8 | 4 | 1) << 21 , Offset = (8 | 4 | 0) << 21 , PreIndex = (8 | 4 | 1) << 21 , PostIndex = (0 | 4 | 0) << 21 ,
  NegOffset = (8 | 0 | 0) << 21 , NegPreIndex = (8 | 0 | 1) << 21 , NegPostIndex = (0 | 0 | 0) << 21
}
 
enum  AddressType {
  Offset = (8 | 4 | 0) << 21 , PreIndex = (8 | 4 | 1) << 21 , PostIndex = (0 | 4 | 0) << 21 , PairOffset ,
  PairPreIndex , PairPostIndex , Reg , PCOffset ,
  Unknown
}
 
enum  Scaling { Unscaled , Scaled }
 
- Public Types inherited from dart::compiler::Operand
enum  OperandType {
  Shifted , Extended , Immediate , BitfieldImm ,
  Unknown
}
 
- Protected Member Functions inherited from dart::compiler::Operand
 Operand ()
 
void SetModRM (int mod, Register rm)
 
void SetSIB (ScaleFactor scale, Register index, Register base)
 
void SetDisp8 (int8_t disp)
 
void SetDisp32 (int32_t disp)
 
 Operand ()
 
void SetModRM (int mod, Register rm)
 
void SetSIB (ScaleFactor scale, Register index, Register base)
 
void SetDisp8 (int8_t disp)
 
void SetDisp32 (int32_t disp)
 

Detailed Description

Definition at line 369 of file assembler_arm.h.

Constructor & Destructor Documentation

◆ FieldAddress() [1/18]

dart::compiler::FieldAddress::FieldAddress ( Register  base,
int32_t  disp 
)
inline

Definition at line 371 of file assembler_arm.h.

372 : Address(base, disp - kHeapObjectTag) {}
Address(const Address &other)
@ kHeapObjectTag

◆ FieldAddress() [2/18]

dart::compiler::FieldAddress::FieldAddress ( Register  base,
Register  r 
)

◆ FieldAddress() [3/18]

dart::compiler::FieldAddress::FieldAddress ( const FieldAddress other)
inline

Definition at line 377 of file assembler_arm.h.

377: Address(other) {}

◆ FieldAddress() [4/18]

dart::compiler::FieldAddress::FieldAddress ( Register  base,
int32_t  disp 
)
inline

Definition at line 333 of file assembler_arm64.h.

334 : Address(base, disp - kHeapObjectTag) {}

◆ FieldAddress() [5/18]

dart::compiler::FieldAddress::FieldAddress ( Register  base,
Register  disp 
)
delete

◆ FieldAddress() [6/18]

dart::compiler::FieldAddress::FieldAddress ( const FieldAddress other)
inline

Definition at line 339 of file assembler_arm64.h.

339: Address(other) {}

◆ FieldAddress() [7/18]

dart::compiler::FieldAddress::FieldAddress ( Register  base,
int32_t  disp 
)
inline

Definition at line 212 of file assembler_ia32.h.

213 : Address(base, disp - kHeapObjectTag) {}

◆ FieldAddress() [8/18]

dart::compiler::FieldAddress::FieldAddress ( Register  base,
Register  r 
)

◆ FieldAddress() [9/18]

dart::compiler::FieldAddress::FieldAddress ( Register  base,
Register  index,
ScaleFactor  scale,
int32_t  disp 
)
inline

Definition at line 218 of file assembler_ia32.h.

219 : Address(base, index, scale, disp - kHeapObjectTag) {}
Register index() const
ScaleFactor scale() const

◆ FieldAddress() [10/18]

dart::compiler::FieldAddress::FieldAddress ( Register  base,
Register  index,
ScaleFactor  scale,
Register  r 
)

◆ FieldAddress() [11/18]

dart::compiler::FieldAddress::FieldAddress ( const FieldAddress other)
inline

Definition at line 224 of file assembler_ia32.h.

224: Address(other) {}

◆ FieldAddress() [12/18]

dart::compiler::FieldAddress::FieldAddress ( Register  base,
intptr_t  offset 
)
inline

Definition at line 54 of file assembler_riscv.h.

55 : Address(base, offset - kHeapObjectTag) {}

◆ FieldAddress() [13/18]

dart::compiler::FieldAddress::FieldAddress ( Register  base,
Register  index 
)
delete

◆ FieldAddress() [14/18]

dart::compiler::FieldAddress::FieldAddress ( Register  base,
int32_t  disp 
)
inline

Definition at line 269 of file assembler_x64.h.

270 : Address(base, disp - kHeapObjectTag) {}

◆ FieldAddress() [15/18]

dart::compiler::FieldAddress::FieldAddress ( Register  base,
Register  r 
)

◆ FieldAddress() [16/18]

dart::compiler::FieldAddress::FieldAddress ( Register  base,
Register  index,
ScaleFactor  scale,
int32_t  disp 
)
inline

Definition at line 275 of file assembler_x64.h.

276 : Address(base, index, scale, disp - kHeapObjectTag) {}

◆ FieldAddress() [17/18]

dart::compiler::FieldAddress::FieldAddress ( Register  base,
Register  index,
ScaleFactor  scale,
Register  r 
)

◆ FieldAddress() [18/18]

dart::compiler::FieldAddress::FieldAddress ( const FieldAddress other)
inline

Definition at line 281 of file assembler_x64.h.

281: Address(other) {}

Member Function Documentation

◆ CanHoldOffset()

static bool dart::compiler::FieldAddress::CanHoldOffset ( int32_t  offset,
AddressType  at = Offset,
OperandSize  sz = kEightBytes 
)
inlinestatic

Definition at line 327 of file assembler_arm64.h.

329 {
330 return Address::CanHoldOffset(offset - kHeapObjectTag, at, sz);
331 }
static bool CanHoldOffset(int32_t offset, AddressType at=Offset, OperandSize sz=kEightBytes)

◆ operator=() [1/4]

FieldAddress & dart::compiler::FieldAddress::operator= ( const FieldAddress other)
inline

Definition at line 379 of file assembler_arm.h.

379 {
380 Address::operator=(other);
381 return *this;
382 }
Address & operator=(const Address &other)

◆ operator=() [2/4]

FieldAddress & dart::compiler::FieldAddress::operator= ( const FieldAddress other)
inline

Definition at line 341 of file assembler_arm64.h.

341 {
342 Address::operator=(other);
343 return *this;
344 }

◆ operator=() [3/4]

FieldAddress & dart::compiler::FieldAddress::operator= ( const FieldAddress other)
inline

Definition at line 226 of file assembler_ia32.h.

226 {
227 Address::operator=(other);
228 return *this;
229 }

◆ operator=() [4/4]

FieldAddress & dart::compiler::FieldAddress::operator= ( const FieldAddress other)
inline

Definition at line 283 of file assembler_x64.h.

283 {
284 Address::operator=(other);
285 return *this;
286 }

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