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 161 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 162 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 179 of file qv4codegen_p.h.

◆ Reference() [2/4]

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

Definition at line 185 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 4479 of file qv4codegen.cpp.

◆ asRValue()

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

Definition at line 4462 of file qv4codegen.cpp.

◆ baseObject()

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

Definition at line 4513 of file qv4codegen.cpp.

◆ fromAccumulator()

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

Definition at line 233 of file qv4codegen_p.h.

◆ fromConst()

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

Definition at line 295 of file qv4codegen_p.h.

◆ fromImport()

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

Definition at line 253 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 264 of file qv4codegen_p.h.

◆ fromName()

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

Definition at line 258 of file qv4codegen_p.h.

◆ fromScopedLocal()

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

Definition at line 247 of file qv4codegen_p.h.

◆ fromStackSlot()

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

Definition at line 239 of file qv4codegen_p.h.

◆ fromSubscript()

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

Definition at line 286 of file qv4codegen_p.h.

◆ fromSuper()

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

Definition at line 236 of file qv4codegen_p.h.

◆ fromSuperProperty()

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

Definition at line 279 of file qv4codegen_p.h.

◆ fromThis()

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

Definition at line 301 of file qv4codegen_p.h.

◆ isAccumulator()

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

Definition at line 225 of file qv4codegen_p.h.

◆ isConstant()

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

Definition at line 224 of file qv4codegen_p.h.

◆ isLValue()

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

Definition at line 177 of file qv4codegen_p.h.

◆ isRegister()

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

Definition at line 229 of file qv4codegen_p.h.

◆ isStackSlot()

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

Definition at line 228 of file qv4codegen_p.h.

◆ isSuper()

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

Definition at line 226 of file qv4codegen_p.h.

◆ isSuperProperty()

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

Definition at line 227 of file qv4codegen_p.h.

◆ isValid()

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

Definition at line 212 of file qv4codegen_p.h.

◆ loadInAccumulator()

void Codegen::Reference::loadInAccumulator ( ) const

Definition at line 4708 of file qv4codegen.cpp.

◆ loadTriggersSideEffect()

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

Definition at line 213 of file qv4codegen_p.h.

◆ nameAsIndex()

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

Definition at line 329 of file qv4codegen_p.h.

◆ operator!=()

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

Definition at line 209 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 4430 of file qv4codegen.cpp.

◆ stackSlot()

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

Definition at line 334 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 313 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 316 of file qv4codegen_p.h.

◆ storeConsumeAccumulator()

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

Definition at line 4507 of file qv4codegen.cpp.

◆ storeOnStack() [1/2]

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

Definition at line 4535 of file qv4codegen.cpp.

◆ storeOnStack() [2/2]

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

Definition at line 4538 of file qv4codegen.cpp.

◆ storeRetainAccumulator()

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

Definition at line 4592 of file qv4codegen.cpp.

◆ storeWipesAccumulator()

bool Codegen::Reference::storeWipesAccumulator ( ) const

Definition at line 4607 of file qv4codegen.cpp.

◆ tdzCheck()

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

Definition at line 340 of file qv4codegen_p.h.

Member Data Documentation

◆ [union]

◆ codegen

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

Definition at line 369 of file qv4codegen_p.h.

◆ constant

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

Definition at line 350 of file qv4codegen_p.h.

◆ element

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

Definition at line 363 of file qv4codegen_p.h.

◆ elementBase

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

Definition at line 360 of file qv4codegen_p.h.

◆ elementSubscript

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

Definition at line 362 of file qv4codegen_p.h.

◆ global

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

Definition at line 378 of file qv4codegen_p.h.

◆ hasSavedCallBaseSlot

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

Definition at line 383 of file qv4codegen_p.h.

◆ index

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

Definition at line 352 of file qv4codegen_p.h.

◆ isArgOrEval

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

Definition at line 371 of file qv4codegen_p.h.

◆ isOptional

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

Definition at line 382 of file qv4codegen_p.h.

◆ isReadonly

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

Definition at line 372 of file qv4codegen_p.h.

◆ isReferenceToConst

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

Definition at line 373 of file qv4codegen_p.h.

◆ isVolatile

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

Definition at line 377 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 385 of file qv4codegen_p.h.

◆ property

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

Definition at line 366 of file qv4codegen_p.h.

◆ propertyBase

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

Definition at line 356 of file qv4codegen_p.h.

◆ propertyNameIndex

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

Definition at line 357 of file qv4codegen_p.h.

◆ qmlGlobal

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

Definition at line 379 of file qv4codegen_p.h.

◆ requiresTDZCheck

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

Definition at line 374 of file qv4codegen_p.h.

◆ savedCallBaseSlot

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

Definition at line 386 of file qv4codegen_p.h.

◆ savedCallPropertyNameIndex

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

Definition at line 387 of file qv4codegen_p.h.

◆ scope

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

Definition at line 353 of file qv4codegen_p.h.

◆ sourceLocation

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

Definition at line 384 of file qv4codegen_p.h.

◆ stackSlotIsLocalOrArgument

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

Definition at line 376 of file qv4codegen_p.h.

◆ subscriptLoadedForCall

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

Definition at line 381 of file qv4codegen_p.h.

◆ subscriptRequiresTDZCheck

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

Definition at line 375 of file qv4codegen_p.h.

◆ theStackSlot

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

Definition at line 349 of file qv4codegen_p.h.

◆ throwsReferenceError

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

Definition at line 380 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: