Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
QV4::Compiler::Codegen::Reference Struct Reference

#include <qv4codegen_p.h>

Collaboration diagram for QV4::Compiler::Codegen::Reference:

Public Types

enum  Type {
  Invalid , Accumulator , Super , SuperProperty ,
  StackSlot , ScopedLocal , Name , Member ,
  Subscript , Import , LastLValue = Import , Const
}

Public Member Functions

bool isLValue () const
 Reference (Codegen *cg, Type t=Invalid)
 Reference (const QString &name=QString())
 Reference (const Reference &)=default
 Reference (Reference &&)=default
Referenceoperator= (const Reference &)=default
Referenceoperator= (Reference &&)=default
bool operator== (const Reference &other) const
bool operator!= (const Reference &other) const
bool isValid () const
bool loadTriggersSideEffect () const
bool isConstant () const
bool isAccumulator () const
bool isSuper () const
bool isSuperProperty () const
bool isStackSlot () const
bool isRegister () const
RValue asRValue () const
Reference asLValue () const
Q_REQUIRED_RESULT Reference storeOnStack () const
void storeOnStack (int tempIndex) const
Q_REQUIRED_RESULT Reference storeRetainAccumulator () const
Reference storeConsumeAccumulator () const
Q_REQUIRED_RESULT Reference baseObject () const
bool storeWipesAccumulator () const
void loadInAccumulator () const
int nameAsIndex () const
Moth::StackSlot stackSlot () const
void tdzCheck () const

Static Public Member Functions

static Reference fromAccumulator (Codegen *cg)
static Reference fromSuper (Codegen *cg)
static Reference fromStackSlot (Codegen *cg, int tempIndex=-1, bool isLocal=false)
static Reference fromScopedLocal (Codegen *cg, int index, int scope)
static Reference fromImport (Codegen *cg, int index)
static Reference fromName (Codegen *cg, const QString &name)
static Reference fromMember (const Reference &baseRef, const QString &name, QQmlJS::SourceLocation sourceLocation=QQmlJS::SourceLocation(), bool isOptional=false, std::vector< Moth::BytecodeGenerator::Jump > *optionalChainJumpsToPatch=nullptr)
static Reference fromSuperProperty (const Reference &property)
static Reference fromSubscript (const Reference &baseRef, const Reference &subscript)
static Reference fromConst (Codegen *cg, QV4::ReturnedValue constant)
static Reference fromThis (Codegen *cg)
static Q_REQUIRED_RESULT Reference storeConstOnStack (Codegen *cg, QV4::ReturnedValue constant)
static void storeConstOnStack (Codegen *cg, QV4::ReturnedValue constant, int stackSlot)

Public Attributes

enum QV4::Compiler::Codegen::Reference::Type type = Invalid
union { 
   Moth::StackSlot   theStackSlot 
   QV4::ReturnedValue   constant 
   struct { 
      int   index 
      int   scope 
   } 
   struct { 
      RValue   propertyBase 
      int   propertyNameIndex 
   } 
   struct { 
      Moth::StackSlot   elementBase 
      union { 
         RValue   elementSubscript 
         Moth::StackSlot   element 
      } 
   } 
   Moth::StackSlot   property 
}; 
QString name
Codegencodegen = nullptr
quint32 isArgOrEval:1
quint32 isReadonly:1
quint32 isReferenceToConst:1
quint32 requiresTDZCheck:1
quint32 subscriptRequiresTDZCheck:1
quint32 stackSlotIsLocalOrArgument:1
quint32 isVolatile:1
quint32 global:1
quint32 qmlGlobal:1
quint32 throwsReferenceError:1
quint32 subscriptLoadedForCall:1
quint32 isOptional: 1
quint32 hasSavedCallBaseSlot: 1
QQmlJS::SourceLocation sourceLocation = QQmlJS::SourceLocation()
std::vector< Moth::BytecodeGenerator::Jump > * optionalChainJumpsToPatch = nullptr
int savedCallBaseSlot = -1
int savedCallPropertyNameIndex = -1

Detailed Description

Definition at line 163 of file qv4codegen_p.h.

Member Enumeration Documentation

◆ Type

Enumerator
Invalid 
Accumulator 
Super 
SuperProperty 
StackSlot 
ScopedLocal 
Name 
Member 
Subscript 
Import 
LastLValue 
Const 

Definition at line 164 of file qv4codegen_p.h.

Constructor & Destructor Documentation

◆ Reference() [1/4]

QV4::Compiler::Codegen::Reference::Reference ( Codegen * cg,
Type t = Invalid )
inline

Definition at line 181 of file qv4codegen_p.h.

◆ Reference() [2/4]

QV4::Compiler::Codegen::Reference::Reference ( const QString & name = QString())
inline

Definition at line 187 of file qv4codegen_p.h.

◆ Reference() [3/4]

QV4::Compiler::Codegen::Reference::Reference ( const Reference & )
default

◆ Reference() [4/4]

QV4::Compiler::Codegen::Reference::Reference ( Reference && )
default

Member Function Documentation

◆ asLValue()

Codegen::Reference Codegen::Reference::asLValue ( ) const

Definition at line 4482 of file qv4codegen.cpp.

◆ asRValue()

Codegen::RValue Codegen::Reference::asRValue ( ) const

Definition at line 4465 of file qv4codegen.cpp.

◆ baseObject()

Codegen::Reference Codegen::Reference::baseObject ( ) const

Definition at line 4516 of file qv4codegen.cpp.

◆ fromAccumulator()

Reference QV4::Compiler::Codegen::Reference::fromAccumulator ( Codegen * cg)
inlinestatic

Definition at line 235 of file qv4codegen_p.h.

◆ fromConst()

Reference QV4::Compiler::Codegen::Reference::fromConst ( Codegen * cg,
QV4::ReturnedValue constant )
inlinestatic

Definition at line 297 of file qv4codegen_p.h.

◆ fromImport()

Reference QV4::Compiler::Codegen::Reference::fromImport ( Codegen * cg,
int index )
inlinestatic

Definition at line 255 of file qv4codegen_p.h.

◆ fromMember()

Reference QV4::Compiler::Codegen::Reference::fromMember ( const Reference & baseRef,
const QString & name,
QQmlJS::SourceLocation sourceLocation = QQmlJS::SourceLocation(),
bool isOptional = false,
std::vector< Moth::BytecodeGenerator::Jump > * optionalChainJumpsToPatch = nullptr )
inlinestatic

Definition at line 266 of file qv4codegen_p.h.

◆ fromName()

Reference QV4::Compiler::Codegen::Reference::fromName ( Codegen * cg,
const QString & name )
inlinestatic

Definition at line 260 of file qv4codegen_p.h.

◆ fromScopedLocal()

Reference QV4::Compiler::Codegen::Reference::fromScopedLocal ( Codegen * cg,
int index,
int scope )
inlinestatic

Definition at line 249 of file qv4codegen_p.h.

◆ fromStackSlot()

Reference QV4::Compiler::Codegen::Reference::fromStackSlot ( Codegen * cg,
int tempIndex = -1,
bool isLocal = false )
inlinestatic

Definition at line 241 of file qv4codegen_p.h.

◆ fromSubscript()

Reference QV4::Compiler::Codegen::Reference::fromSubscript ( const Reference & baseRef,
const Reference & subscript )
inlinestatic

Definition at line 288 of file qv4codegen_p.h.

◆ fromSuper()

Reference QV4::Compiler::Codegen::Reference::fromSuper ( Codegen * cg)
inlinestatic

Definition at line 238 of file qv4codegen_p.h.

◆ fromSuperProperty()

Reference QV4::Compiler::Codegen::Reference::fromSuperProperty ( const Reference & property)
inlinestatic

Definition at line 281 of file qv4codegen_p.h.

◆ fromThis()

Reference QV4::Compiler::Codegen::Reference::fromThis ( Codegen * cg)
inlinestatic

Definition at line 303 of file qv4codegen_p.h.

◆ isAccumulator()

bool QV4::Compiler::Codegen::Reference::isAccumulator ( ) const
inline

Definition at line 227 of file qv4codegen_p.h.

◆ isConstant()

bool QV4::Compiler::Codegen::Reference::isConstant ( ) const
inline

Definition at line 226 of file qv4codegen_p.h.

◆ isLValue()

bool QV4::Compiler::Codegen::Reference::isLValue ( ) const
inline

Definition at line 179 of file qv4codegen_p.h.

◆ isRegister()

bool QV4::Compiler::Codegen::Reference::isRegister ( ) const
inline

Definition at line 231 of file qv4codegen_p.h.

◆ isStackSlot()

bool QV4::Compiler::Codegen::Reference::isStackSlot ( ) const
inline

Definition at line 230 of file qv4codegen_p.h.

◆ isSuper()

bool QV4::Compiler::Codegen::Reference::isSuper ( ) const
inline

Definition at line 228 of file qv4codegen_p.h.

◆ isSuperProperty()

bool QV4::Compiler::Codegen::Reference::isSuperProperty ( ) const
inline

Definition at line 229 of file qv4codegen_p.h.

◆ isValid()

bool QV4::Compiler::Codegen::Reference::isValid ( ) const
inline

Definition at line 214 of file qv4codegen_p.h.

◆ loadInAccumulator()

void Codegen::Reference::loadInAccumulator ( ) const

Definition at line 4711 of file qv4codegen.cpp.

◆ loadTriggersSideEffect()

bool QV4::Compiler::Codegen::Reference::loadTriggersSideEffect ( ) const
inline

Definition at line 215 of file qv4codegen_p.h.

◆ nameAsIndex()

int QV4::Compiler::Codegen::Reference::nameAsIndex ( ) const
inline

Definition at line 331 of file qv4codegen_p.h.

◆ operator!=()

bool QV4::Compiler::Codegen::Reference::operator!= ( const Reference & other) const
inline

Definition at line 211 of file qv4codegen_p.h.

◆ operator=() [1/2]

Reference & QV4::Compiler::Codegen::Reference::operator= ( const Reference & )
default

◆ operator=() [2/2]

Reference & QV4::Compiler::Codegen::Reference::operator= ( Reference && )
default

◆ operator==()

bool Codegen::Reference::operator== ( const Reference & other) const

Definition at line 4433 of file qv4codegen.cpp.

◆ stackSlot()

Moth::StackSlot QV4::Compiler::Codegen::Reference::stackSlot ( ) const
inline

Definition at line 336 of file qv4codegen_p.h.

◆ storeConstOnStack() [1/2]

Q_REQUIRED_RESULT Reference QV4::Compiler::Codegen::Reference::storeConstOnStack ( Codegen * cg,
QV4::ReturnedValue constant )
inlinestatic

Definition at line 315 of file qv4codegen_p.h.

◆ storeConstOnStack() [2/2]

void QV4::Compiler::Codegen::Reference::storeConstOnStack ( Codegen * cg,
QV4::ReturnedValue constant,
int stackSlot )
inlinestatic

Definition at line 318 of file qv4codegen_p.h.

◆ storeConsumeAccumulator()

Codegen::Reference Codegen::Reference::storeConsumeAccumulator ( ) const

Definition at line 4510 of file qv4codegen.cpp.

◆ storeOnStack() [1/2]

Codegen::Reference Codegen::Reference::storeOnStack ( ) const

Definition at line 4538 of file qv4codegen.cpp.

◆ storeOnStack() [2/2]

void Codegen::Reference::storeOnStack ( int tempIndex) const

Definition at line 4541 of file qv4codegen.cpp.

◆ storeRetainAccumulator()

Codegen::Reference Codegen::Reference::storeRetainAccumulator ( ) const

Definition at line 4595 of file qv4codegen.cpp.

◆ storeWipesAccumulator()

bool Codegen::Reference::storeWipesAccumulator ( ) const

Definition at line 4610 of file qv4codegen.cpp.

◆ tdzCheck()

void QV4::Compiler::Codegen::Reference::tdzCheck ( ) const
inline

Definition at line 342 of file qv4codegen_p.h.

Member Data Documentation

◆ [union]

◆ codegen

Codegen* QV4::Compiler::Codegen::Reference::codegen = nullptr

Definition at line 371 of file qv4codegen_p.h.

◆ constant

QV4::ReturnedValue QV4::Compiler::Codegen::Reference::constant

Definition at line 352 of file qv4codegen_p.h.

◆ element

Moth::StackSlot QV4::Compiler::Codegen::Reference::element

Definition at line 365 of file qv4codegen_p.h.

◆ elementBase

Moth::StackSlot QV4::Compiler::Codegen::Reference::elementBase

Definition at line 362 of file qv4codegen_p.h.

◆ elementSubscript

RValue QV4::Compiler::Codegen::Reference::elementSubscript

Definition at line 364 of file qv4codegen_p.h.

◆ global

quint32 QV4::Compiler::Codegen::Reference::global

Definition at line 380 of file qv4codegen_p.h.

◆ hasSavedCallBaseSlot

quint32 QV4::Compiler::Codegen::Reference::hasSavedCallBaseSlot

Definition at line 385 of file qv4codegen_p.h.

◆ index

int QV4::Compiler::Codegen::Reference::index

Definition at line 354 of file qv4codegen_p.h.

◆ isArgOrEval

quint32 QV4::Compiler::Codegen::Reference::isArgOrEval

Definition at line 373 of file qv4codegen_p.h.

◆ isOptional

quint32 QV4::Compiler::Codegen::Reference::isOptional

Definition at line 384 of file qv4codegen_p.h.

◆ isReadonly

quint32 QV4::Compiler::Codegen::Reference::isReadonly

Definition at line 374 of file qv4codegen_p.h.

◆ isReferenceToConst

quint32 QV4::Compiler::Codegen::Reference::isReferenceToConst

Definition at line 375 of file qv4codegen_p.h.

◆ isVolatile

quint32 QV4::Compiler::Codegen::Reference::isVolatile

Definition at line 379 of file qv4codegen_p.h.

◆ name

QString QV4::Compiler::Codegen::Reference::name

◆ optionalChainJumpsToPatch

std::vector<Moth::BytecodeGenerator::Jump>* QV4::Compiler::Codegen::Reference::optionalChainJumpsToPatch = nullptr

Definition at line 387 of file qv4codegen_p.h.

◆ property

Moth::StackSlot QV4::Compiler::Codegen::Reference::property

Definition at line 368 of file qv4codegen_p.h.

◆ propertyBase

RValue QV4::Compiler::Codegen::Reference::propertyBase

Definition at line 358 of file qv4codegen_p.h.

◆ propertyNameIndex

int QV4::Compiler::Codegen::Reference::propertyNameIndex

Definition at line 359 of file qv4codegen_p.h.

◆ qmlGlobal

quint32 QV4::Compiler::Codegen::Reference::qmlGlobal

Definition at line 381 of file qv4codegen_p.h.

◆ requiresTDZCheck

quint32 QV4::Compiler::Codegen::Reference::requiresTDZCheck

Definition at line 376 of file qv4codegen_p.h.

◆ savedCallBaseSlot

int QV4::Compiler::Codegen::Reference::savedCallBaseSlot = -1

Definition at line 388 of file qv4codegen_p.h.

◆ savedCallPropertyNameIndex

int QV4::Compiler::Codegen::Reference::savedCallPropertyNameIndex = -1

Definition at line 389 of file qv4codegen_p.h.

◆ scope

int QV4::Compiler::Codegen::Reference::scope

Definition at line 355 of file qv4codegen_p.h.

◆ sourceLocation

QQmlJS::SourceLocation QV4::Compiler::Codegen::Reference::sourceLocation = QQmlJS::SourceLocation()

Definition at line 386 of file qv4codegen_p.h.

◆ stackSlotIsLocalOrArgument

quint32 QV4::Compiler::Codegen::Reference::stackSlotIsLocalOrArgument

Definition at line 378 of file qv4codegen_p.h.

◆ subscriptLoadedForCall

quint32 QV4::Compiler::Codegen::Reference::subscriptLoadedForCall

Definition at line 383 of file qv4codegen_p.h.

◆ subscriptRequiresTDZCheck

quint32 QV4::Compiler::Codegen::Reference::subscriptRequiresTDZCheck

Definition at line 377 of file qv4codegen_p.h.

◆ theStackSlot

Moth::StackSlot QV4::Compiler::Codegen::Reference::theStackSlot

Definition at line 351 of file qv4codegen_p.h.

◆ throwsReferenceError

quint32 QV4::Compiler::Codegen::Reference::throwsReferenceError

Definition at line 382 of file qv4codegen_p.h.

◆ type

enum QV4::Compiler::Codegen::Reference::Type QV4::Compiler::Codegen::Reference::type = Invalid

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