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::Context Struct Reference

#include <qv4compilercontext_p.h>

Collaboration diagram for QV4::Compiler::Context:

Classes

struct  KeyValuePair
struct  Member
class  PropertyDependencyMap
struct  ResolvedName
class  SmallSet
struct  SourceLocationTable

Public Types

enum  MemberType {
  UndefinedMember , ThisFunctionName , VariableDefinition , VariableDeclaration ,
  FunctionDefinition
}
enum class  UsesArgumentsObject : quint8 { Unknown , NotUsed , Used }
typedef QMap< QString, MemberMemberMap

Public Member Functions

 Context (Context *parent, ContextType type)
bool hasArgument (const QString &name) const
int findArgument (const QString &name, bool *isInjected) const
Member findMember (const QString &name) const
bool memberInfo (const QString &name, const Member **m) const
bool requiresImplicitReturnValue () const
void addUsedVariable (const QString &name)
bool addLocalVar (const QString &name, MemberType contextType, QQmlJS::AST::VariableScope scope, QQmlJS::AST::FunctionExpression *function=nullptr, const QQmlJS::SourceLocation &declarationLocation=QQmlJS::SourceLocation(), bool isInjected=false)
ResolvedName resolveName (const QString &name, const QQmlJS::SourceLocation &accessLocation)
void emitBlockHeader (Compiler::Codegen *codegen)
void emitBlockFooter (Compiler::Codegen *codegen)
void setupFunctionIndices (Moth::BytecodeGenerator *bytecodeGenerator)
bool canHaveTailCalls () const
bool isCaseBlock () const

Public Attributes

Contextparent
QString name
int line = 0
int column = 0
int registerCountInFunction = 0
int functionIndex = -1
int blockIndex = -1
MemberMap members
QSet< QStringusedVariables
QQmlJS::AST::FormalParameterListformals = nullptr
QQmlJS::AST::BoundNames arguments
QQmlJS::AST::TypereturnType = nullptr
QStringList locals
QStringList moduleRequests
QVector< ImportEntryimportEntries
QVector< ExportEntryexportEntries
QString localNameForDefaultExport
QVector< Context * > nestedContexts
ControlFlowcontrolFlow = nullptr
QByteArray code
QVector< CompiledData::CodeOffsetToLineAndStatementlineAndStatementNumberMapping
std::unique_ptr< SourceLocationTablesourceLocationTable
std::vector< unsigned > labelInfo
int nRegisters = 0
int registerOffset = -1
int sizeOfLocalTemporalDeadZone = 0
int firstTemporalDeadZoneRegister = 0
int sizeOfRegisterTemporalDeadZone = 0
bool hasDirectEval = false
bool allVarsEscape = false
bool hasNestedFunctions = false
bool isStrict = false
bool isArrowFunction = false
bool isGenerator = false
bool usesThis = false
bool innerFunctionAccessesThis = false
bool innerFunctionAccessesNewTarget = false
bool returnsClosure = false
bool argumentsCanEscape = false
bool requiresExecutionContext = false
bool isWithBlock = false
bool isCatchBlock = false
QString caughtVariable
QQmlJS::SourceLocation lastBlockInitializerLocation
UsesArgumentsObject usesArgumentsObject = UsesArgumentsObject::Unknown
ContextType contextType

Detailed Description

Definition at line 134 of file qv4compilercontext_p.h.

Member Typedef Documentation

◆ MemberMap

typedef QMap<QString, Member> QV4::Compiler::Context::MemberMap

Definition at line 173 of file qv4compilercontext_p.h.

Member Enumeration Documentation

◆ MemberType

enum QV4::Compiler::Context::MemberType
Enumerator
UndefinedMember 
ThisFunctionName 
VariableDefinition 
VariableDeclaration 
FunctionDefinition 

Definition at line 143 of file qv4compilercontext_p.h.

◆ UsesArgumentsObject

enum class QV4::Compiler::Context::UsesArgumentsObject : quint8
strong
Enumerator
Unknown 
NotUsed 
Used 

Definition at line 215 of file qv4compilercontext_p.h.

Constructor & Destructor Documentation

◆ Context()

QV4::Compiler::Context::Context ( Context * parent,
ContextType type )
inline

Definition at line 267 of file qv4compilercontext_p.h.

References contextType, isStrict, and parent.

Member Function Documentation

◆ addLocalVar()

bool Context::addLocalVar ( const QString & name,
MemberType contextType,
QQmlJS::AST::VariableScope scope,
QQmlJS::AST::FunctionExpression * function = nullptr,
const QQmlJS::SourceLocation & declarationLocation = QQmlJS::SourceLocation(),
bool isInjected = false )

◆ addUsedVariable()

void QV4::Compiler::Context::addUsedVariable ( const QString & name)
inline

Definition at line 320 of file qv4compilercontext_p.h.

◆ canHaveTailCalls()

bool QV4::Compiler::Context::canHaveTailCalls ( ) const
inline

Definition at line 356 of file qv4compilercontext_p.h.

References QV4::Compiler::Block, canHaveTailCalls(), contextType, QV4::Compiler::Function, isGenerator, isStrict, and parent.

Referenced by canHaveTailCalls().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ emitBlockFooter()

void Context::emitBlockFooter ( Compiler::Codegen * codegen)

Definition at line 287 of file qv4compilercontext.cpp.

References requiresExecutionContext.

◆ emitBlockHeader()

◆ findArgument()

int QV4::Compiler::Context::findArgument ( const QString & name,
bool * isInjected ) const
inline

Definition at line 280 of file qv4compilercontext_p.h.

◆ findMember()

Member QV4::Compiler::Context::findMember ( const QString & name) const
inline

Definition at line 293 of file qv4compilercontext_p.h.

References members, and parent.

◆ hasArgument()

bool QV4::Compiler::Context::hasArgument ( const QString & name) const
inline

Definition at line 275 of file qv4compilercontext_p.h.

◆ isCaseBlock()

bool QV4::Compiler::Context::isCaseBlock ( ) const
inline

Definition at line 367 of file qv4compilercontext_p.h.

Referenced by resolveName().

Here is the caller graph for this function:

◆ memberInfo()

bool QV4::Compiler::Context::memberInfo ( const QString & name,
const Member ** m ) const
inline

Definition at line 302 of file qv4compilercontext_p.h.

References members.

◆ requiresImplicitReturnValue()

bool QV4::Compiler::Context::requiresImplicitReturnValue ( ) const
inline

◆ resolveName()

◆ setupFunctionIndices()

void Context::setupFunctionIndices ( Moth::BytecodeGenerator * bytecodeGenerator)

Definition at line 304 of file qv4compilercontext.cpp.

References QV4::Compiler::Binding, QV4::Compiler::Block, contextType, QV4::Moth::BytecodeGenerator::currentRegister(), QV4::Compiler::ESModule, QV4::Compiler::Eval, firstTemporalDeadZoneRegister, QV4::Compiler::Function, QV4::Compiler::Global, members, QV4::Moth::BytecodeGenerator::newRegister(), QV4::Moth::BytecodeGenerator::newRegisterArray(), nRegisters, registerOffset, QV4::Compiler::ScriptImportedByQML, sizeOfLocalTemporalDeadZone, and sizeOfRegisterTemporalDeadZone.

Referenced by emitBlockHeader().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ allVarsEscape

bool QV4::Compiler::Context::allVarsEscape = false

Definition at line 199 of file qv4compilercontext_p.h.

◆ arguments

QQmlJS::AST::BoundNames QV4::Compiler::Context::arguments

Definition at line 178 of file qv4compilercontext_p.h.

◆ argumentsCanEscape

bool QV4::Compiler::Context::argumentsCanEscape = false
mutable

Definition at line 208 of file qv4compilercontext_p.h.

Referenced by resolveName().

◆ blockIndex

int QV4::Compiler::Context::blockIndex = -1

Definition at line 141 of file qv4compilercontext_p.h.

Referenced by emitBlockHeader().

◆ caughtVariable

QString QV4::Compiler::Context::caughtVariable

Definition at line 212 of file qv4compilercontext_p.h.

◆ code

QByteArray QV4::Compiler::Context::code

Definition at line 188 of file qv4compilercontext_p.h.

◆ column

int QV4::Compiler::Context::column = 0

◆ contextType

ContextType QV4::Compiler::Context::contextType

◆ controlFlow

ControlFlow* QV4::Compiler::Context::controlFlow = nullptr

Definition at line 187 of file qv4compilercontext_p.h.

◆ exportEntries

QVector<ExportEntry> QV4::Compiler::Context::exportEntries

Definition at line 183 of file qv4compilercontext_p.h.

◆ firstTemporalDeadZoneRegister

int QV4::Compiler::Context::firstTemporalDeadZoneRegister = 0

Definition at line 196 of file qv4compilercontext_p.h.

Referenced by setupFunctionIndices().

◆ formals

QQmlJS::AST::FormalParameterList* QV4::Compiler::Context::formals = nullptr

Definition at line 177 of file qv4compilercontext_p.h.

◆ functionIndex

int QV4::Compiler::Context::functionIndex = -1

Definition at line 140 of file qv4compilercontext_p.h.

◆ hasDirectEval

bool QV4::Compiler::Context::hasDirectEval = false

Definition at line 198 of file qv4compilercontext_p.h.

Referenced by resolveName().

◆ hasNestedFunctions

bool QV4::Compiler::Context::hasNestedFunctions = false

Definition at line 200 of file qv4compilercontext_p.h.

◆ importEntries

QVector<ImportEntry> QV4::Compiler::Context::importEntries

Definition at line 182 of file qv4compilercontext_p.h.

◆ innerFunctionAccessesNewTarget

bool QV4::Compiler::Context::innerFunctionAccessesNewTarget = false

Definition at line 206 of file qv4compilercontext_p.h.

Referenced by emitBlockHeader().

◆ innerFunctionAccessesThis

bool QV4::Compiler::Context::innerFunctionAccessesThis = false

Definition at line 205 of file qv4compilercontext_p.h.

Referenced by emitBlockHeader().

◆ isArrowFunction

bool QV4::Compiler::Context::isArrowFunction = false

Definition at line 202 of file qv4compilercontext_p.h.

◆ isCatchBlock

bool QV4::Compiler::Context::isCatchBlock = false

Definition at line 211 of file qv4compilercontext_p.h.

Referenced by emitBlockHeader().

◆ isGenerator

bool QV4::Compiler::Context::isGenerator = false

Definition at line 203 of file qv4compilercontext_p.h.

Referenced by canHaveTailCalls().

◆ isStrict

bool QV4::Compiler::Context::isStrict = false

Definition at line 201 of file qv4compilercontext_p.h.

Referenced by Context(), canHaveTailCalls(), emitBlockHeader(), and resolveName().

◆ isWithBlock

bool QV4::Compiler::Context::isWithBlock = false

Definition at line 210 of file qv4compilercontext_p.h.

Referenced by resolveName().

◆ labelInfo

std::vector<unsigned> QV4::Compiler::Context::labelInfo

Definition at line 191 of file qv4compilercontext_p.h.

◆ lastBlockInitializerLocation

QQmlJS::SourceLocation QV4::Compiler::Context::lastBlockInitializerLocation

Definition at line 213 of file qv4compilercontext_p.h.

◆ line

int QV4::Compiler::Context::line = 0

Definition at line 137 of file qv4compilercontext_p.h.

◆ lineAndStatementNumberMapping

QVector<CompiledData::CodeOffsetToLineAndStatement> QV4::Compiler::Context::lineAndStatementNumberMapping

Definition at line 189 of file qv4compilercontext_p.h.

◆ localNameForDefaultExport

QString QV4::Compiler::Context::localNameForDefaultExport

Definition at line 184 of file qv4compilercontext_p.h.

◆ locals

QStringList QV4::Compiler::Context::locals

Definition at line 180 of file qv4compilercontext_p.h.

◆ members

MemberMap QV4::Compiler::Context::members

◆ moduleRequests

QStringList QV4::Compiler::Context::moduleRequests

Definition at line 181 of file qv4compilercontext_p.h.

◆ name

QString QV4::Compiler::Context::name

◆ nestedContexts

QVector<Context *> QV4::Compiler::Context::nestedContexts

Definition at line 185 of file qv4compilercontext_p.h.

◆ nRegisters

int QV4::Compiler::Context::nRegisters = 0

Definition at line 193 of file qv4compilercontext_p.h.

Referenced by emitBlockHeader(), and setupFunctionIndices().

◆ parent

Context* QV4::Compiler::Context::parent

◆ registerCountInFunction

int QV4::Compiler::Context::registerCountInFunction = 0

Definition at line 139 of file qv4compilercontext_p.h.

◆ registerOffset

int QV4::Compiler::Context::registerOffset = -1

Definition at line 194 of file qv4compilercontext_p.h.

Referenced by emitBlockHeader(), and setupFunctionIndices().

◆ requiresExecutionContext

bool QV4::Compiler::Context::requiresExecutionContext = false

Definition at line 209 of file qv4compilercontext_p.h.

Referenced by emitBlockFooter(), emitBlockHeader(), and resolveName().

◆ returnsClosure

bool QV4::Compiler::Context::returnsClosure = false

Definition at line 207 of file qv4compilercontext_p.h.

◆ returnType

QQmlJS::AST::Type* QV4::Compiler::Context::returnType = nullptr

Definition at line 179 of file qv4compilercontext_p.h.

◆ sizeOfLocalTemporalDeadZone

int QV4::Compiler::Context::sizeOfLocalTemporalDeadZone = 0

Definition at line 195 of file qv4compilercontext_p.h.

Referenced by setupFunctionIndices().

◆ sizeOfRegisterTemporalDeadZone

int QV4::Compiler::Context::sizeOfRegisterTemporalDeadZone = 0

Definition at line 197 of file qv4compilercontext_p.h.

Referenced by emitBlockHeader(), and setupFunctionIndices().

◆ sourceLocationTable

std::unique_ptr<SourceLocationTable> QV4::Compiler::Context::sourceLocationTable

Definition at line 190 of file qv4compilercontext_p.h.

◆ usedVariables

QSet<QString> QV4::Compiler::Context::usedVariables

Definition at line 176 of file qv4compilercontext_p.h.

◆ usesArgumentsObject

UsesArgumentsObject QV4::Compiler::Context::usesArgumentsObject = UsesArgumentsObject::Unknown

Definition at line 221 of file qv4compilercontext_p.h.

Referenced by emitBlockHeader().

◆ usesThis

bool QV4::Compiler::Context::usesThis = false

Definition at line 204 of file qv4compilercontext_p.h.

Referenced by emitBlockHeader().


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