v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
v8::internal::MemOperand Class Reference

#include <assembler-arm.h>

Inheritance diagram for v8::internal::MemOperand:
Collaboration diagram for v8::internal::MemOperand:

Public Types

enum  OffsetAddend { offset_minus_one = -1 , offset_zero = 0 , offset_minus_one = -1 , offset_zero = 0 }
 
enum  OffsetAddend { offset_minus_one = -1 , offset_zero = 0 , offset_minus_one = -1 , offset_zero = 0 }
 

Public Member Functions

 MemOperand (Register rn, int32_t offset=0, AddrMode am=Offset)
 
 MemOperand (Register rn, Register rm, AddrMode am=Offset)
 
 MemOperand (Register rn, Register rm, ShiftOp shift_op, int shift_imm, AddrMode am=Offset)
 
bool IsImmediateOffset () const
 
void set_offset (int32_t offset)
 
int32_t offset () const
 
Register rn () const
 
Register rm () const
 
AddrMode am () const
 
bool OffsetIsUint12Encodable () const
 
 MemOperand ()
 
 MemOperand (Register base, int64_t offset=0, AddrMode addrmode=Offset)
 
 MemOperand (Register base, Register regoffset, Shift shift=LSL, unsigned shift_amount=0)
 
 MemOperand (Register base, Register regoffset, Extend extend, unsigned shift_amount=0)
 
 MemOperand (Register base, const Operand &offset, AddrMode addrmode=Offset)
 
const Registerbase () const
 
const Registerregoffset () const
 
int64_t offset () const
 
AddrMode addrmode () const
 
Shift shift () const
 
Extend extend () const
 
unsigned shift_amount () const
 
bool IsImmediateOffset () const
 
bool IsRegisterOffset () const
 
bool IsPreIndex () const
 
bool IsPostIndex () const
 
 MemOperand (Register rj, int32_t offset=0)
 
 MemOperand (Register rj, Register offset=no_reg)
 
Register base () const
 
Register index () const
 
int32_t offset () const
 
bool hasIndexReg () const
 
 MemOperand (Register rn, int32_t offset=0)
 
 MemOperand (Register rn, int32_t unit, int32_t multiplier, OffsetAddend offset_addend=offset_zero)
 
int32_t offset () const
 
bool OffsetIsInt16Encodable () const
 
 MemOperand (Register rn, int64_t offset=0)
 
 MemOperand (Register ra, Register rb)
 
 MemOperand (Register ra, Register rb, int64_t offset)
 
int64_t offset () const
 
Register ra () const
 
Register rb () const
 
 MemOperand (Register rn, int32_t offset=0)
 
 MemOperand (Register rn, int32_t unit, int32_t multiplier, OffsetAddend offset_addend=offset_zero)
 
int32_t offset () const
 
void set_offset (int32_t offset)
 
bool OffsetIsInt12Encodable () const
 
 MemOperand (Register rx, Disp offset=0)
 
 MemOperand (Register rx, Register rb, Disp offset=0)
 
int32_t offset () const
 
uint32_t getDisplacement () const
 
Register rb () const
 
Register getBaseRegister () const
 
Register rx () const
 
Register getIndexRegister () const
 
- Public Member Functions inherited from v8::internal::Operand
V8_INLINE Operand (int32_t immediate, RelocInfo::Mode rmode=RelocInfo::NO_INFO)
 
V8_INLINE Operand (const ExternalReference &f)
 
 Operand (Handle< HeapObject > handle)
 
V8_INLINE Operand (Tagged< Smi > value)
 
V8_INLINE Operand (Register rm)
 
 Operand (Register rm, ShiftOp shift_op, int shift_imm)
 
 Operand (Register rm, ShiftOp shift_op, Register rs)
 
bool IsRegister () const
 
bool IsImmediateShiftedRegister () const
 
bool IsRegisterShiftedRegister () const
 
int InstructionsRequired (const Assembler *assembler, Instr instr=0) const
 
bool MustOutputRelocInfo (const Assembler *assembler) const
 
int32_t immediate () const
 
bool IsImmediate () const
 
HeapNumberRequest heap_number_request () const
 
bool IsHeapNumberRequest () const
 
Register rm () const
 
Register rs () const
 
ShiftOp shift_op () const
 
 Operand (Register reg, Shift shift=LSL, unsigned shift_amount=0)
 
 Operand (Register reg, Extend extend, unsigned shift_amount=0)
 
bool IsHeapNumberRequest () const
 
HeapNumberRequest heap_number_request () const
 
Immediate immediate_for_heap_number_request () const
 
template<typename T >
 Operand (T t)
 
template<typename T >
 Operand (T t, RelocInfo::Mode rmode)
 
bool IsImmediate () const
 
bool IsShiftedRegister () const
 
bool IsExtendedRegister () const
 
bool IsZero () const
 
Operand ToExtendedRegister () const
 
Operand ToW () const
 
Immediate immediate () const
 
int64_t ImmediateValue () const
 
RelocInfo::Mode ImmediateRMode () const
 
Register reg () const
 
Shift shift () const
 
Extend extend () const
 
unsigned shift_amount () const
 
bool NeedsRelocation (const Assembler *assembler) const
 
V8_INLINE Operand (Register reg)
 
V8_INLINE Operand (XMMRegister xmm_reg)
 
V8_INLINE Operand (int32_t disp, RelocInfo::Mode rmode)
 
V8_INLINE Operand (Immediate imm)
 
 Operand (Register base, int32_t disp, RelocInfo::Mode rmode=RelocInfo::NO_INFO)
 
 Operand (Label *label)
 
 Operand (Register base, Register index, ScaleFactor scale, int32_t disp, RelocInfo::Mode rmode=RelocInfo::NO_INFO)
 
 Operand (Register index, ScaleFactor scale, int32_t disp, RelocInfo::Mode rmode=RelocInfo::NO_INFO)
 
bool is_reg (Register reg) const
 
bool is_reg (XMMRegister reg) const
 
bool is_reg_only () const
 
Register reg () const
 
base::Vector< const uint8_t > encoded_bytes () const
 
RelocInfo::Mode rmode ()
 
V8_INLINE Operand (int64_t immediate, RelocInfo::Mode rmode=RelocInfo::NO_INFO)
 
V8_INLINE Operand (const ExternalReference &f)
 
V8_INLINE Operand (Tagged< Smi > value)
 
 Operand (Handle< HeapObject > handle)
 
V8_INLINE Operand (Register rm)
 
V8_INLINE bool is_reg () const
 
int64_t immediate () const
 
bool IsImmediate () const
 
HeapNumberRequest heap_number_request () const
 
bool IsHeapNumberRequest () const
 
Register rm () const
 
RelocInfo::Mode rmode () const
 
V8_INLINE Operand (int64_t immediate, RelocInfo::Mode rmode=RelocInfo::NO_INFO)
 
V8_INLINE Operand (const ExternalReference &f)
 
V8_INLINE Operand (Tagged< Smi > value)
 
 Operand (Handle< HeapObject > handle)
 
V8_INLINE Operand (Register rm)
 
V8_INLINE bool is_reg () const
 
int64_t immediate () const
 
bool IsImmediate () const
 
HeapNumberRequest heap_number_request () const
 
bool IsHeapNumberRequest () const
 
Register rm () const
 
RelocInfo::Mode rmode () const
 
V8_INLINE Operand (intptr_t immediate, RelocInfo::Mode rmode=RelocInfo::NO_INFO)
 
V8_INLINE Operand (const ExternalReference &f)
 
 Operand (Handle< HeapObject > handle)
 
V8_INLINE Operand (Tagged< Smi > value)
 
V8_INLINE Operand (Register rm)
 
V8_INLINE bool is_reg () const
 
bool must_output_reloc_info (const Assembler *assembler) const
 
intptr_t immediate () const
 
bool IsImmediate () const
 
HeapNumberRequest heap_number_request () const
 
Register rm () const
 
bool IsHeapNumberRequest () const
 
V8_INLINE Operand (intptr_t immediate, RelocInfo::Mode rmode=RelocInfo::NO_INFO)
 
V8_INLINE Operand (Tagged< Smi > value)
 
V8_INLINE Operand (const ExternalReference &f)
 
 Operand (Handle< HeapObject > handle, RelocInfo::Mode rmode=RelocInfo::FULL_EMBEDDED_OBJECT)
 
V8_INLINE Operand (Register rm)
 
V8_INLINE bool is_reg () const
 
intptr_t immediate_for_heap_number_request () const
 
intptr_t immediate () const
 
bool IsImmediate () const
 
HeapNumberRequest heap_number_request () const
 
bool IsHeapNumberRequest () const
 
Register rm () const
 
RelocInfo::Mode rmode () const
 
V8_INLINE Operand (intptr_t immediate, RelocInfo::Mode rmode=RelocInfo::NO_INFO)
 
V8_INLINE Operand (const ExternalReference &f)
 
 Operand (Handle< HeapObject > handle)
 
V8_INLINE Operand (Tagged< Smi > value)
 
V8_INLINE Operand (Register rm)
 
V8_INLINE bool is_reg () const
 
bool must_output_reloc_info (const Assembler *assembler) const
 
intptr_t immediate () const
 
HeapNumberRequest heap_number_request () const
 
void setBits (int n)
 
Register rm () const
 
bool is_heap_number_request () const
 
RelocInfo::Mode rmode () const
 
V8_INLINE constexpr Operand (Register base, int32_t disp)
 
V8_INLINE Operand (Register base, Register index, ScaleFactor scale, int32_t disp)
 
V8_INLINE Operand (Register index, ScaleFactor scale, int32_t disp)
 
 Operand (Operand base, int32_t offset)
 
V8_INLINE Operand (Label *label, int addend=0)
 
 Operand (const Operand &) V8_NOEXCEPT=default
 
Operandoperator= (const Operand &) V8_NOEXCEPT=default
 
V8_INLINE constexpr bool is_label_operand () const
 
V8_INLINE constexpr uint8_t rex () const
 
V8_INLINE const MemoryOperandmemory () const
 
V8_INLINE const LabelOperandlabel () const
 
bool AddressUsesRegister (Register reg) const
 

Static Public Member Functions

static V8_INLINE MemOperand PointerAddressFromSmiKey (Register array, Register key, AddrMode am=Offset)
 
- Static Public Member Functions inherited from v8::internal::Operand
static V8_INLINE Operand Zero ()
 
static V8_INLINE Operand SmiUntag (Register rm)
 
static V8_INLINE Operand PointerOffsetFromSmiKey (Register key)
 
static V8_INLINE Operand DoubleOffsetFromSmiKey (Register key)
 
static Operand EmbeddedNumber (double number)
 
static Operand EmbeddedNumber (double number)
 
static Operand EmbeddedHeapNumber (double number)
 
static Operand JumpTable (Register index, ScaleFactor scale, Label *table)
 
static Operand ForRegisterPlusImmediate (Register base, Immediate imm)
 
static Operand EmbeddedNumber (double number)
 
static Operand EmbeddedNumber (double number)
 
static V8_INLINE Operand Zero ()
 
static Operand EmbeddedNumber (double number)
 
static Operand EmbeddedNumber (double number)
 
static V8_INLINE Operand Zero ()
 
static Operand EmbeddedNumber (double value)
 

Private Attributes

Register rn_
 
Register rm_
 
int32_t offset_
 
ShiftOp shift_op_
 
int shift_imm_
 
AddrMode am_
 
Register base_
 
Register regoffset_
 
int64_t offset_
 
AddrMode addrmode_
 
Shift shift_
 
Extend extend_
 
unsigned shift_amount_
 
Register index_
 
Register ra_
 
Register rb_
 
Register baseRegister
 
Register indexRegister
 

Friends

class Assembler
 

Detailed Description

Definition at line 150 of file assembler-s390.h.

Member Enumeration Documentation

◆ OffsetAddend [1/2]

enum v8::internal::MemOperand::OffsetAddend
Enumerator
offset_minus_one 
offset_zero 
offset_minus_one 
offset_zero 

Definition at line 127 of file assembler-mips64.h.

◆ OffsetAddend [2/2]

enum v8::internal::MemOperand::OffsetAddend
Enumerator
offset_minus_one 
offset_zero 
offset_minus_one 
offset_zero 

Definition at line 158 of file assembler-riscv.h.

Constructor & Destructor Documentation

◆ MemOperand() [1/19]

v8::internal::MemOperand::MemOperand ( Register rn,
int32_t offset = 0,
AddrMode am = Offset )
explicit

◆ MemOperand() [2/19]

v8::internal::MemOperand::MemOperand ( Register rn,
Register rm,
AddrMode am = Offset )
explicit

◆ MemOperand() [3/19]

v8::internal::MemOperand::MemOperand ( Register rn,
Register rm,
ShiftOp shift_op,
int shift_imm,
AddrMode am = Offset )
explicit

◆ MemOperand() [4/19]

v8::internal::MemOperand::MemOperand ( )
inline

Definition at line 369 of file assembler-arm64-inl.h.

◆ MemOperand() [5/19]

v8::internal::MemOperand::MemOperand ( Register base,
int64_t offset = 0,
AddrMode addrmode = Offset )
inlineexplicit

Definition at line 378 of file assembler-arm64-inl.h.

Here is the call graph for this function:

◆ MemOperand() [6/19]

v8::internal::MemOperand::MemOperand ( Register base,
Register regoffset,
Shift shift = LSL,
unsigned shift_amount = 0 )
inlineexplicit

Definition at line 406 of file assembler-arm64-inl.h.

Here is the call graph for this function:

◆ MemOperand() [7/19]

v8::internal::MemOperand::MemOperand ( Register base,
Register regoffset,
Extend extend,
unsigned shift_amount = 0 )
inlineexplicit

Definition at line 389 of file assembler-arm64-inl.h.

Here is the call graph for this function:

◆ MemOperand() [8/19]

v8::internal::MemOperand::MemOperand ( Register base,
const Operand & offset,
AddrMode addrmode = Offset )
inlineexplicit

Definition at line 420 of file assembler-arm64-inl.h.

Here is the call graph for this function:

◆ MemOperand() [9/19]

v8::internal::MemOperand::MemOperand ( Register rj,
int32_t offset = 0 )
explicit

Definition at line 235 of file assembler-riscv.cc.

Here is the call graph for this function:

◆ MemOperand() [10/19]

v8::internal::MemOperand::MemOperand ( Register rj,
Register offset = no_reg )
explicit

◆ MemOperand() [11/19]

v8::internal::MemOperand::MemOperand ( Register rn,
int32_t offset = 0 )
explicit

◆ MemOperand() [12/19]

v8::internal::MemOperand::MemOperand ( Register rn,
int32_t unit,
int32_t multiplier,
OffsetAddend offset_addend = offset_zero )
explicit

Definition at line 239 of file assembler-riscv.cc.

◆ MemOperand() [13/19]

v8::internal::MemOperand::MemOperand ( Register rn,
int64_t offset = 0 )
explicit

◆ MemOperand() [14/19]

v8::internal::MemOperand::MemOperand ( Register ra,
Register rb )
explicit

◆ MemOperand() [15/19]

v8::internal::MemOperand::MemOperand ( Register ra,
Register rb,
int64_t offset )
explicit

◆ MemOperand() [16/19]

v8::internal::MemOperand::MemOperand ( Register rn,
int32_t offset = 0 )
explicit

◆ MemOperand() [17/19]

v8::internal::MemOperand::MemOperand ( Register rn,
int32_t unit,
int32_t multiplier,
OffsetAddend offset_addend = offset_zero )
explicit

◆ MemOperand() [18/19]

v8::internal::MemOperand::MemOperand ( Register rx,
Disp offset = 0 )
explicit

◆ MemOperand() [19/19]

v8::internal::MemOperand::MemOperand ( Register rx,
Register rb,
Disp offset = 0 )
explicit

Member Function Documentation

◆ addrmode()

AddrMode v8::internal::MemOperand::addrmode ( ) const
inline

Definition at line 148 of file assembler-arm64.h.

Here is the caller graph for this function:

◆ am()

AddrMode v8::internal::MemOperand::am ( ) const
inline

Definition at line 228 of file assembler-arm.h.

Here is the caller graph for this function:

◆ base() [1/2]

const Register & v8::internal::MemOperand::base ( ) const
inline

Definition at line 145 of file assembler-arm64.h.

Here is the caller graph for this function:

◆ base() [2/2]

Register v8::internal::MemOperand::base ( ) const
inline

Definition at line 99 of file assembler-loong64.h.

◆ extend()

Extend v8::internal::MemOperand::extend ( ) const
inline

Definition at line 150 of file assembler-arm64.h.

◆ getBaseRegister()

Register v8::internal::MemOperand::getBaseRegister ( ) const
inline

Definition at line 164 of file assembler-s390.h.

◆ getDisplacement()

uint32_t v8::internal::MemOperand::getDisplacement ( ) const
inline

Definition at line 156 of file assembler-s390.h.

◆ getIndexRegister()

Register v8::internal::MemOperand::getIndexRegister ( ) const
inline

Definition at line 171 of file assembler-s390.h.

◆ hasIndexReg()

bool v8::internal::MemOperand::hasIndexReg ( ) const
inline

Definition at line 103 of file assembler-loong64.h.

◆ index()

Register v8::internal::MemOperand::index ( ) const
inline

Definition at line 100 of file assembler-loong64.h.

◆ IsImmediateOffset() [1/2]

bool v8::internal::MemOperand::IsImmediateOffset ( ) const
inline

Definition at line 214 of file assembler-arm.h.

Here is the caller graph for this function:

◆ IsImmediateOffset() [2/2]

bool v8::internal::MemOperand::IsImmediateOffset ( ) const
inline

◆ IsPostIndex()

bool v8::internal::MemOperand::IsPostIndex ( ) const
inline

Definition at line 467 of file assembler-arm64-inl.h.

◆ IsPreIndex()

bool v8::internal::MemOperand::IsPreIndex ( ) const
inline

Definition at line 465 of file assembler-arm64-inl.h.

◆ IsRegisterOffset()

bool v8::internal::MemOperand::IsRegisterOffset ( ) const
inline

Definition at line 461 of file assembler-arm64-inl.h.

◆ offset() [1/7]

int32_t v8::internal::MemOperand::offset ( ) const
inline

Definition at line 221 of file assembler-arm.h.

Here is the caller graph for this function:

◆ offset() [2/7]

int64_t v8::internal::MemOperand::offset ( ) const
inline

Definition at line 147 of file assembler-arm64.h.

◆ offset() [3/7]

int32_t v8::internal::MemOperand::offset ( ) const
inline

Definition at line 101 of file assembler-loong64.h.

◆ offset() [4/7]

int32_t v8::internal::MemOperand::offset ( ) const
inline

Definition at line 132 of file assembler-mips64.h.

◆ offset() [5/7]

int64_t v8::internal::MemOperand::offset ( ) const
inline

Definition at line 140 of file assembler-ppc.h.

◆ offset() [6/7]

int32_t v8::internal::MemOperand::offset ( ) const
inline

Definition at line 163 of file assembler-riscv.h.

◆ offset() [7/7]

int32_t v8::internal::MemOperand::offset ( ) const
inline

Definition at line 155 of file assembler-s390.h.

◆ OffsetIsInt12Encodable()

bool v8::internal::MemOperand::OffsetIsInt12Encodable ( ) const
inline

Definition at line 167 of file assembler-riscv.h.

◆ OffsetIsInt16Encodable()

bool v8::internal::MemOperand::OffsetIsInt16Encodable ( ) const
inline

Definition at line 134 of file assembler-mips64.h.

◆ OffsetIsUint12Encodable()

bool v8::internal::MemOperand::OffsetIsUint12Encodable ( ) const
inline

Definition at line 230 of file assembler-arm.h.

◆ PointerAddressFromSmiKey()

static V8_INLINE MemOperand v8::internal::MemOperand::PointerAddressFromSmiKey ( Register array,
Register key,
AddrMode am = Offset )
inlinestatic

Definition at line 207 of file assembler-arm.h.

◆ ra()

Register v8::internal::MemOperand::ra ( ) const
inline

Definition at line 143 of file assembler-ppc.h.

◆ rb() [1/2]

Register v8::internal::MemOperand::rb ( ) const
inline

Definition at line 145 of file assembler-ppc.h.

Here is the caller graph for this function:

◆ rb() [2/2]

Register v8::internal::MemOperand::rb ( ) const
inline

Definition at line 159 of file assembler-s390.h.

◆ regoffset()

const Register & v8::internal::MemOperand::regoffset ( ) const
inline

Definition at line 146 of file assembler-arm64.h.

Here is the caller graph for this function:

◆ rm()

Register v8::internal::MemOperand::rm ( ) const
inline

Definition at line 227 of file assembler-arm.h.

Here is the caller graph for this function:

◆ rn()

Register v8::internal::MemOperand::rn ( ) const
inline

Definition at line 226 of file assembler-arm.h.

Here is the caller graph for this function:

◆ rx()

Register v8::internal::MemOperand::rx ( ) const
inline

Definition at line 167 of file assembler-s390.h.

Here is the caller graph for this function:

◆ set_offset() [1/2]

void v8::internal::MemOperand::set_offset ( int32_t offset)
inline

Definition at line 216 of file assembler-arm.h.

◆ set_offset() [2/2]

void v8::internal::MemOperand::set_offset ( int32_t offset)
inline

Definition at line 165 of file assembler-riscv.h.

◆ shift()

Shift v8::internal::MemOperand::shift ( ) const
inline

Definition at line 149 of file assembler-arm64.h.

Here is the caller graph for this function:

◆ shift_amount()

unsigned v8::internal::MemOperand::shift_amount ( ) const
inline

Definition at line 151 of file assembler-arm64.h.

Friends And Related Symbol Documentation

◆ Assembler

Assembler
friend

Definition at line 242 of file assembler-arm.h.

Member Data Documentation

◆ addrmode_

AddrMode v8::internal::MemOperand::addrmode_
private

Definition at line 161 of file assembler-arm64.h.

◆ am_

AddrMode v8::internal::MemOperand::am_
private

Definition at line 240 of file assembler-arm.h.

◆ base_

Register v8::internal::MemOperand::base_
private

Definition at line 158 of file assembler-arm64.h.

◆ baseRegister

Register v8::internal::MemOperand::baseRegister
private

Definition at line 174 of file assembler-s390.h.

◆ extend_

Extend v8::internal::MemOperand::extend_
private

Definition at line 163 of file assembler-arm64.h.

◆ index_

Register v8::internal::MemOperand::index_
private

Definition at line 107 of file assembler-loong64.h.

◆ indexRegister

Register v8::internal::MemOperand::indexRegister
private

Definition at line 175 of file assembler-s390.h.

◆ offset_ [1/2]

int32_t v8::internal::MemOperand::offset_
private

Definition at line 237 of file assembler-arm.h.

◆ offset_ [2/2]

int64_t v8::internal::MemOperand::offset_
private

Definition at line 160 of file assembler-arm64.h.

◆ ra_

Register v8::internal::MemOperand::ra_
private

Definition at line 148 of file assembler-ppc.h.

◆ rb_

Register v8::internal::MemOperand::rb_
private

Definition at line 150 of file assembler-ppc.h.

◆ regoffset_

Register v8::internal::MemOperand::regoffset_
private

Definition at line 159 of file assembler-arm64.h.

◆ rm_

Register v8::internal::MemOperand::rm_
private

Definition at line 236 of file assembler-arm.h.

◆ rn_

Register v8::internal::MemOperand::rn_
private

Definition at line 235 of file assembler-arm.h.

◆ shift_

Shift v8::internal::MemOperand::shift_
private

Definition at line 162 of file assembler-arm64.h.

◆ shift_amount_

unsigned v8::internal::MemOperand::shift_amount_
private

Definition at line 164 of file assembler-arm64.h.

◆ shift_imm_

int v8::internal::MemOperand::shift_imm_
private

Definition at line 239 of file assembler-arm.h.

◆ shift_op_

ShiftOp v8::internal::MemOperand::shift_op_
private

Definition at line 238 of file assembler-arm.h.


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