Qt 6.x
The Qt SDK
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
QQmlJSTypePropagator Class Reference

#include <qqmljstypepropagator_p.h>

+ Inheritance diagram for QQmlJSTypePropagator:
+ Collaboration diagram for QQmlJSTypePropagator:

Public Member Functions

 QQmlJSTypePropagator (const QV4::Compiler::JSUnitGenerator *unitGenerator, const QQmlJSTypeResolver *typeResolver, QQmlJSLogger *logger, QQmlSA::PassManager *passManager=nullptr)
 
InstructionAnnotations run (const Function *m_function, QQmlJS::DiagnosticMessage *error)
 
void generate_Ret () override
 
void generate_Debug () override
 
void generate_LoadConst (int index) override
 
void generate_LoadZero () override
 
void generate_LoadTrue () override
 
void generate_LoadFalse () override
 
void generate_LoadNull () override
 
void generate_LoadUndefined () override
 
void generate_LoadInt (int value) override
 
void generate_MoveConst (int constIndex, int destTemp) override
 
void generate_LoadReg (int reg) override
 
void generate_StoreReg (int reg) override
 
void generate_MoveReg (int srcReg, int destReg) override
 
void generate_LoadImport (int index) override
 
void generate_LoadLocal (int index) override
 
void generate_StoreLocal (int index) override
 
void generate_LoadScopedLocal (int scope, int index) override
 
void generate_StoreScopedLocal (int scope, int index) override
 
void generate_LoadRuntimeString (int stringId) override
 
void generate_MoveRegExp (int regExpId, int destReg) override
 
void generate_LoadClosure (int value) override
 
void generate_LoadName (int nameIndex) override
 
void generate_LoadGlobalLookup (int index) override
 
void generate_LoadQmlContextPropertyLookup (int index) override
 
void generate_StoreNameCommon (int nameIndex)
 
void generate_StoreNameSloppy (int nameIndex) override
 
void generate_StoreNameStrict (int name) override
 
void generate_LoadElement (int base) override
 
void generate_StoreElement (int base, int index) override
 
void generate_LoadProperty (int nameIndex) override
 
void generate_LoadOptionalProperty (int name, int offset) override
 
void generate_GetLookup (int index) override
 
void generate_GetOptionalLookup (int index, int offset) override
 
void generate_StoreProperty (int name, int base) override
 
void generate_SetLookup (int index, int base) override
 
void generate_LoadSuperProperty (int property) override
 
void generate_StoreSuperProperty (int property) override
 
void generate_Yield () override
 
void generate_YieldStar () override
 
void generate_Resume (int) override
 
void generate_CallValue (int name, int argc, int argv) override
 
void generate_CallWithReceiver (int name, int thisObject, int argc, int argv) override
 
void generate_CallProperty (int name, int base, int argc, int argv) override
 
void generate_CallPropertyLookup (int lookupIndex, int base, int argc, int argv) override
 
void generate_CallName (int name, int argc, int argv) override
 
void generate_CallPossiblyDirectEval (int argc, int argv) override
 
void generate_CallGlobalLookup (int index, int argc, int argv) override
 
void generate_CallQmlContextPropertyLookup (int index, int argc, int argv) override
 
void generate_CallWithSpread (int func, int thisObject, int argc, int argv) override
 
void generate_TailCall (int func, int thisObject, int argc, int argv) override
 
void generate_Construct (int func, int argc, int argv) override
 
void generate_ConstructWithSpread (int func, int argc, int argv) override
 
void generate_SetUnwindHandler (int offset) override
 
void generate_UnwindDispatch () override
 
void generate_UnwindToLabel (int level, int offset) override
 
void generate_DeadTemporalZoneCheck (int name) override
 
void generate_ThrowException () override
 
void generate_GetException () override
 
void generate_SetException () override
 
void generate_CreateCallContext () override
 
void generate_PushCatchContext (int index, int name) override
 
void generate_PushWithContext () override
 
void generate_PushBlockContext (int index) override
 
void generate_CloneBlockContext () override
 
void generate_PushScriptContext (int index) override
 
void generate_PopScriptContext () override
 
void generate_PopContext () override
 
void generate_GetIterator (int iterator) override
 
void generate_IteratorNext (int value, int done) override
 
void generate_IteratorNextForYieldStar (int iterator, int object) override
 
void generate_IteratorClose (int done) override
 
void generate_DestructureRestElement () override
 
void generate_DeleteProperty (int base, int index) override
 
void generate_DeleteName (int name) override
 
void generate_TypeofName (int name) override
 
void generate_TypeofValue () override
 
void generate_DeclareVar (int varName, int isDeletable) override
 
void generate_DefineArray (int argc, int args) override
 
void generate_DefineObjectLiteral (int internalClassId, int argc, int args) override
 
void generate_CreateClass (int classIndex, int heritage, int computedNames) override
 
void generate_CreateMappedArgumentsObject () override
 
void generate_CreateUnmappedArgumentsObject () override
 
void generate_CreateRestParameter (int argIndex) override
 
void generate_ConvertThisToObject () override
 
void generate_LoadSuperConstructor () override
 
void generate_ToObject () override
 
void generate_Jump (int offset) override
 
void generate_JumpTrue (int offset) override
 
void generate_JumpFalse (int offset) override
 
void generate_JumpNoException (int offset) override
 
void generate_JumpNotUndefined (int offset) override
 
void generate_CheckException () override
 
void generate_CmpEqNull () override
 
void generate_CmpNeNull () override
 
void generate_CmpEqInt (int lhsConst) override
 
void generate_CmpNeInt (int lhs) override
 
void generate_CmpEq (int lhs) override
 
void generate_CmpNe (int lhs) override
 
void generate_CmpGt (int lhs) override
 
void generate_CmpGe (int lhs) override
 
void generate_CmpLt (int lhs) override
 
void generate_CmpLe (int lhs) override
 
void generate_CmpStrictEqual (int lhs) override
 
void generate_CmpStrictNotEqual (int lhs) override
 
void generate_CmpIn (int lhs) override
 
void generate_CmpInstanceOf (int lhs) override
 
void generate_As (int lhs) override
 
void generate_UNot () override
 
void generate_UPlus () override
 
void generate_UMinus () override
 
void generate_UCompl () override
 
void generate_Increment () override
 
void generate_Decrement () override
 
void generate_Add (int lhs) override
 
void generate_BitAnd (int lhs) override
 
void generate_BitOr (int lhs) override
 
void generate_BitXor (int lhs) override
 
void generate_UShr (int lhs) override
 
void generate_Shr (int lhs) override
 
void generate_Shl (int lhs) override
 
void generate_BitAndConst (int rhsConst) override
 
void generate_BitOrConst (int rhsConst) override
 
void generate_BitXorConst (int rhsConst) override
 
void generate_UShrConst (int rhsConst) override
 
void generate_ShrConst (int rhs) override
 
void generate_ShlConst (int rhs) override
 
void generate_Exp (int lhs) override
 
void generate_Mul (int lhs) override
 
void generate_Div (int lhs) override
 
void generate_Mod (int lhs) override
 
void generate_Sub (int lhs) override
 
void generate_InitializeBlockDeadTemporalZone (int firstReg, int count) override
 
void generate_ThrowOnNullOrUndefined () override
 
void generate_GetTemplateObject (int index) override
 
bool checkForEnumProblems (const QQmlJSRegisterContent &base, const QString &propertyName) const
 
Verdict startInstruction (QV4::Moth::Instr::Type instr) override
 
void endInstruction (QV4::Moth::Instr::Type instr) override
 
- Public Member Functions inherited from QQmlJSCompilePass
 QQmlJSCompilePass (const QV4::Compiler::JSUnitGenerator *jsUnitGenerator, const QQmlJSTypeResolver *typeResolver, QQmlJSLogger *logger)
 
- Public Member Functions inherited from QV4::Moth::ByteCodeHandler
 ByteCodeHandler ()=default
 
virtual ~ByteCodeHandler ()
 
void decode (const char *code, uint len)
 
void reset ()
 
int currentInstructionOffset () const
 
int nextInstructionOffset () const
 
int absoluteOffset (int relativeOffset) const
 

Additional Inherited Members

- Public Types inherited from QQmlJSCompilePass
enum  RegisterShortcuts { InvalidRegister = -1 , Accumulator = QV4::CallData::Accumulator , This = QV4::CallData::This , FirstArgument = QV4::CallData::OffsetCount }
 
using SourceLocationTable = QV4::Compiler::Context::SourceLocationTable
 
using VirtualRegisters = QFlatMap< int, VirtualRegister >
 
using InstructionAnnotations = QFlatMap< int, InstructionAnnotation >
 
- Protected Types inherited from QV4::Moth::ByteCodeHandler
enum  Verdict { ProcessInstruction , SkipInstruction }
 
- Protected Member Functions inherited from QQmlJSCompilePass
int firstRegisterIndex () const
 
bool isArgument (int registerIndex) const
 
QQmlJSRegisterContent argumentType (int registerIndex) const
 
State initialState (const Function *function)
 
State nextStateFromAnnotations (const State &oldState, const InstructionAnnotations &annotations)
 
QQmlJS::SourceLocation sourceLocation (int instructionOffset) const
 
QQmlJS::SourceLocation currentSourceLocation () const
 
void setError (const QString &message, int instructionOffset)
 
void setError (const QString &message)
 
void generate_Add (int) override
 
void generate_As (int) override
 
void generate_BitAnd (int) override
 
void generate_BitAndConst (int) override
 
void generate_BitOr (int) override
 
void generate_BitOrConst (int) override
 
void generate_BitXor (int) override
 
void generate_BitXorConst (int) override
 
void generate_CallGlobalLookup (int, int, int) override
 
void generate_CallName (int, int, int) override
 
void generate_CallPossiblyDirectEval (int, int) override
 
void generate_CallProperty (int, int, int, int) override
 
void generate_CallPropertyLookup (int, int, int, int) override
 
void generate_CallQmlContextPropertyLookup (int, int, int) override
 
void generate_CallValue (int, int, int) override
 
void generate_CallWithReceiver (int, int, int, int) override
 
void generate_CallWithSpread (int, int, int, int) override
 
void generate_CheckException () override
 
void generate_CloneBlockContext () override
 
void generate_CmpEq (int) override
 
void generate_CmpEqInt (int) override
 
void generate_CmpEqNull () override
 
void generate_CmpGe (int) override
 
void generate_CmpGt (int) override
 
void generate_CmpIn (int) override
 
void generate_CmpInstanceOf (int) override
 
void generate_CmpLe (int) override
 
void generate_CmpLt (int) override
 
void generate_CmpNe (int) override
 
void generate_CmpNeInt (int) override
 
void generate_CmpNeNull () override
 
void generate_CmpStrictEqual (int) override
 
void generate_CmpStrictNotEqual (int) override
 
void generate_Construct (int, int, int) override
 
void generate_ConstructWithSpread (int, int, int) override
 
void generate_ConvertThisToObject () override
 
void generate_CreateCallContext () override
 
void generate_CreateClass (int, int, int) override
 
void generate_CreateMappedArgumentsObject () override
 
void generate_CreateRestParameter (int) override
 
void generate_CreateUnmappedArgumentsObject () override
 
void generate_DeadTemporalZoneCheck (int) override
 
void generate_Debug () override
 
void generate_DeclareVar (int, int) override
 
void generate_Decrement () override
 
void generate_DefineArray (int, int) override
 
void generate_DefineObjectLiteral (int, int, int) override
 
void generate_DeleteName (int) override
 
void generate_DeleteProperty (int, int) override
 
void generate_DestructureRestElement () override
 
void generate_Div (int) override
 
void generate_Exp (int) override
 
void generate_GetException () override
 
void generate_GetIterator (int) override
 
void generate_GetLookup (int) override
 
void generate_GetOptionalLookup (int, int) override
 
void generate_GetTemplateObject (int) override
 
void generate_Increment () override
 
void generate_InitializeBlockDeadTemporalZone (int, int) override
 
void generate_IteratorClose (int) override
 
void generate_IteratorNext (int, int) override
 
void generate_IteratorNextForYieldStar (int, int) override
 
void generate_Jump (int) override
 
void generate_JumpFalse (int) override
 
void generate_JumpNoException (int) override
 
void generate_JumpNotUndefined (int) override
 
void generate_JumpTrue (int) override
 
void generate_LoadClosure (int) override
 
void generate_LoadConst (int) override
 
void generate_LoadElement (int) override
 
void generate_LoadFalse () override
 
void generate_LoadGlobalLookup (int) override
 
void generate_LoadImport (int) override
 
void generate_LoadInt (int) override
 
void generate_LoadLocal (int) override
 
void generate_LoadName (int) override
 
void generate_LoadNull () override
 
void generate_LoadOptionalProperty (int, int) override
 
void generate_LoadProperty (int) override
 
void generate_LoadQmlContextPropertyLookup (int) override
 
void generate_LoadReg (int) override
 
void generate_LoadRuntimeString (int) override
 
void generate_LoadScopedLocal (int, int) override
 
void generate_LoadSuperConstructor () override
 
void generate_LoadSuperProperty (int) override
 
void generate_LoadTrue () override
 
void generate_LoadUndefined () override
 
void generate_LoadZero () override
 
void generate_Mod (int) override
 
void generate_MoveConst (int, int) override
 
void generate_MoveReg (int, int) override
 
void generate_MoveRegExp (int, int) override
 
void generate_Mul (int) override
 
void generate_PopContext () override
 
void generate_PopScriptContext () override
 
void generate_PushBlockContext (int) override
 
void generate_PushCatchContext (int, int) override
 
void generate_PushScriptContext (int) override
 
void generate_PushWithContext () override
 
void generate_Resume (int) override
 
void generate_Ret () override
 
void generate_SetException () override
 
void generate_SetLookup (int, int) override
 
void generate_SetUnwindHandler (int) override
 
void generate_Shl (int) override
 
void generate_ShlConst (int) override
 
void generate_Shr (int) override
 
void generate_ShrConst (int) override
 
void generate_StoreElement (int, int) override
 
void generate_StoreLocal (int) override
 
void generate_StoreNameSloppy (int) override
 
void generate_StoreNameStrict (int) override
 
void generate_StoreProperty (int, int) override
 
void generate_StoreReg (int) override
 
void generate_StoreScopedLocal (int, int) override
 
void generate_StoreSuperProperty (int) override
 
void generate_Sub (int) override
 
void generate_TailCall (int, int, int, int) override
 
void generate_ThrowException () override
 
void generate_ThrowOnNullOrUndefined () override
 
void generate_ToObject () override
 
void generate_TypeofName (int) override
 
void generate_TypeofValue () override
 
void generate_UCompl () override
 
void generate_UMinus () override
 
void generate_UNot () override
 
void generate_UPlus () override
 
void generate_UShr (int) override
 
void generate_UShrConst (int) override
 
void generate_UnwindDispatch () override
 
void generate_UnwindToLabel (int, int) override
 
void generate_Yield () override
 
void generate_YieldStar () override
 
virtual Verdict startInstruction (Moth::Instr::Type instr)=0
 
virtual void endInstruction (Moth::Instr::Type instr)=0
 
- Static Protected Member Functions inherited from QQmlJSCompilePass
static bool instructionManipulatesContext (QV4::Moth::Instr::Type type)
 
- Protected Attributes inherited from QQmlJSCompilePass
const QV4::Compiler::JSUnitGeneratorm_jsUnitGenerator = nullptr
 
const QQmlJSTypeResolverm_typeResolver = nullptr
 
QQmlJSLoggerm_logger = nullptr
 
const Functionm_function = nullptr
 
QQmlJS::DiagnosticMessagem_error = nullptr
 

Detailed Description

QQmlJSTypePropagator is the initial pass that performs the type inference and annotates every register in use at any instruction with the possible types it may hold. This includes information on how and in what scope the values are retrieved. These annotations may be used by further compile passes for refinement or code generation.

Definition at line 27 of file qqmljstypepropagator_p.h.

Constructor & Destructor Documentation

◆ QQmlJSTypePropagator()

QQmlJSTypePropagator::QQmlJSTypePropagator ( const QV4::Compiler::JSUnitGenerator unitGenerator,
const QQmlJSTypeResolver typeResolver,
QQmlJSLogger logger,
QQmlSA::PassManager passManager = nullptr 
)

Definition at line 29 of file qqmljstypepropagator.cpp.

Member Function Documentation

◆ checkForEnumProblems()

bool QQmlJSTypePropagator::checkForEnumProblems ( const QQmlJSRegisterContent base,
const QString propertyName 
) const

Definition at line 677 of file qqmljstypepropagator.cpp.

References base, QQmlJSUtils::didYouMean(), QQmlJSLogger::log(), QQmlJSCompilePass::m_logger, qmlMissingEnumEntry, and qmlRestrictedType.

Referenced by generate_CallProperty().

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

◆ endInstruction()

◆ generate_Add()

void QQmlJSTypePropagator::generate_Add ( int  lhs)
override

Definition at line 2318 of file qqmljstypepropagator.cpp.

References QSOperator::Add.

◆ generate_As()

◆ generate_BitAnd()

void QQmlJSTypePropagator::generate_BitAnd ( int  lhs)
override

Definition at line 2323 of file qqmljstypepropagator.cpp.

References QSOperator::BitAnd.

◆ generate_BitAndConst()

void QQmlJSTypePropagator::generate_BitAndConst ( int  rhsConst)
override

Definition at line 2353 of file qqmljstypepropagator.cpp.

References QSOperator::BitAnd, and Q_UNUSED.

◆ generate_BitOr()

void QQmlJSTypePropagator::generate_BitOr ( int  lhs)
override

Definition at line 2328 of file qqmljstypepropagator.cpp.

References QSOperator::BitOr.

◆ generate_BitOrConst()

void QQmlJSTypePropagator::generate_BitOrConst ( int  rhsConst)
override

Definition at line 2359 of file qqmljstypepropagator.cpp.

References QSOperator::BitOr, and Q_UNUSED.

◆ generate_BitXor()

void QQmlJSTypePropagator::generate_BitXor ( int  lhs)
override

Definition at line 2333 of file qqmljstypepropagator.cpp.

References QSOperator::BitXor.

◆ generate_BitXorConst()

void QQmlJSTypePropagator::generate_BitXorConst ( int  rhsConst)
override

Definition at line 2365 of file qqmljstypepropagator.cpp.

References QSOperator::BitXor, and Q_UNUSED.

◆ generate_CallGlobalLookup()

void QQmlJSTypePropagator::generate_CallGlobalLookup ( int  index,
int  argc,
int  argv 
)
override

Definition at line 1668 of file qqmljstypepropagator.cpp.

References QV4::Compiler::JSUnitGenerator::lookupName(), and QQmlJSCompilePass::m_jsUnitGenerator.

+ Here is the call graph for this function:

◆ generate_CallName()

void QQmlJSTypePropagator::generate_CallName ( int  name,
int  argc,
int  argv 
)
override

Definition at line 1630 of file qqmljstypepropagator.cpp.

References QQmlJSCompilePass::m_jsUnitGenerator, and QV4::Compiler::JSUnitGenerator::stringForIndex().

+ Here is the call graph for this function:

◆ generate_CallPossiblyDirectEval()

void QQmlJSTypePropagator::generate_CallPossiblyDirectEval ( int  argc,
int  argv 
)
override

Definition at line 1635 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.

◆ generate_CallProperty()

void QQmlJSTypePropagator::generate_CallProperty ( int  name,
int  base,
int  argc,
int  argv 
)
override

◆ generate_CallPropertyLookup()

void QQmlJSTypePropagator::generate_CallPropertyLookup ( int  lookupIndex,
int  base,
int  argc,
int  argv 
)
override

Definition at line 1624 of file qqmljstypepropagator.cpp.

References base, generate_CallProperty(), QV4::Compiler::JSUnitGenerator::lookupNameIndex(), and QQmlJSCompilePass::m_jsUnitGenerator.

+ Here is the call graph for this function:

◆ generate_CallQmlContextPropertyLookup()

void QQmlJSTypePropagator::generate_CallQmlContextPropertyLookup ( int  index,
int  argc,
int  argv 
)
override

Definition at line 1673 of file qqmljstypepropagator.cpp.

References QV4::Compiler::JSUnitGenerator::lookupName(), QQmlJSCompilePass::m_function, QQmlJSCompilePass::m_jsUnitGenerator, and QQmlJSCompilePass::Function::qmlScope.

+ Here is the call graph for this function:

◆ generate_CallValue()

void QQmlJSTypePropagator::generate_CallValue ( int  name,
int  argc,
int  argv 
)
override

Definition at line 998 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.

◆ generate_CallWithReceiver()

void QQmlJSTypePropagator::generate_CallWithReceiver ( int  name,
int  thisObject,
int  argc,
int  argv 
)
override

Definition at line 1007 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.

◆ generate_CallWithSpread()

void QQmlJSTypePropagator::generate_CallWithSpread ( int  func,
int  thisObject,
int  argc,
int  argv 
)
override

Definition at line 1680 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.

◆ generate_CheckException()

void QQmlJSTypePropagator::generate_CheckException ( )
override

Definition at line 2016 of file qqmljstypepropagator.cpp.

◆ generate_CloneBlockContext()

void QQmlJSTypePropagator::generate_CloneBlockContext ( )
override

Definition at line 1805 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED.

◆ generate_CmpEq()

void QQmlJSTypePropagator::generate_CmpEq ( int  lhs)
override

Definition at line 2142 of file qqmljstypepropagator.cpp.

References QSOperator::Equal.

◆ generate_CmpEqInt()

void QQmlJSTypePropagator::generate_CmpEqInt ( int  lhsConst)
override

Definition at line 2124 of file qqmljstypepropagator.cpp.

References QSOperator::Equal, QQmlJSTypeResolver::globalType(), QQmlJSTypeResolver::int32Type(), QQmlJSCompilePass::m_typeResolver, Q_UNUSED, and QQmlJSTypeResolver::typeForBinaryOperation().

+ Here is the call graph for this function:

◆ generate_CmpEqNull()

void QQmlJSTypePropagator::generate_CmpEqNull ( )
override

Definition at line 2112 of file qqmljstypepropagator.cpp.

References QQmlJSTypeResolver::boolType(), QQmlJSTypeResolver::globalType(), and QQmlJSCompilePass::m_typeResolver.

+ Here is the call graph for this function:

◆ generate_CmpGe()

void QQmlJSTypePropagator::generate_CmpGe ( int  lhs)
override

Definition at line 2160 of file qqmljstypepropagator.cpp.

References QSOperator::Ge.

◆ generate_CmpGt()

void QQmlJSTypePropagator::generate_CmpGt ( int  lhs)
override

Definition at line 2154 of file qqmljstypepropagator.cpp.

References QSOperator::Gt.

◆ generate_CmpIn()

void QQmlJSTypePropagator::generate_CmpIn ( int  lhs)
override

Definition at line 2190 of file qqmljstypepropagator.cpp.

References QQmlJSTypeResolver::globalType(), QSOperator::In, QQmlJSTypeResolver::jsValueType(), and QQmlJSCompilePass::m_typeResolver.

+ Here is the call graph for this function:

◆ generate_CmpInstanceOf()

void QQmlJSTypePropagator::generate_CmpInstanceOf ( int  lhs)
override

Definition at line 2202 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.

◆ generate_CmpLe()

void QQmlJSTypePropagator::generate_CmpLe ( int  lhs)
override

Definition at line 2172 of file qqmljstypepropagator.cpp.

References QSOperator::Le.

◆ generate_CmpLt()

void QQmlJSTypePropagator::generate_CmpLt ( int  lhs)
override

Definition at line 2166 of file qqmljstypepropagator.cpp.

References QSOperator::Lt.

◆ generate_CmpNe()

void QQmlJSTypePropagator::generate_CmpNe ( int  lhs)
override

Definition at line 2148 of file qqmljstypepropagator.cpp.

References QSOperator::NotEqual.

◆ generate_CmpNeInt()

void QQmlJSTypePropagator::generate_CmpNeInt ( int  lhs)
override

Definition at line 2133 of file qqmljstypepropagator.cpp.

References QQmlJSTypeResolver::globalType(), QQmlJSTypeResolver::int32Type(), QQmlJSCompilePass::m_typeResolver, QSOperator::NotEqual, Q_UNUSED, and QQmlJSTypeResolver::typeForBinaryOperation().

+ Here is the call graph for this function:

◆ generate_CmpNeNull()

void QQmlJSTypePropagator::generate_CmpNeNull ( )
override

Definition at line 2118 of file qqmljstypepropagator.cpp.

References QQmlJSTypeResolver::boolType(), QQmlJSTypeResolver::globalType(), and QQmlJSCompilePass::m_typeResolver.

+ Here is the call graph for this function:

◆ generate_CmpStrictEqual()

void QQmlJSTypePropagator::generate_CmpStrictEqual ( int  lhs)
override

Definition at line 2178 of file qqmljstypepropagator.cpp.

References QSOperator::StrictEqual.

◆ generate_CmpStrictNotEqual()

void QQmlJSTypePropagator::generate_CmpStrictNotEqual ( int  lhs)
override

Definition at line 2184 of file qqmljstypepropagator.cpp.

References QSOperator::StrictNotEqual.

◆ generate_Construct()

void QQmlJSTypePropagator::generate_Construct ( int  func,
int  argc,
int  argv 
)
override

Definition at line 1700 of file qqmljstypepropagator.cpp.

References QQmlJSTypeResolver::globalType(), QQmlJSTypeResolver::jsValueType(), QQmlJSCompilePass::m_typeResolver, and Q_UNUSED.

+ Here is the call graph for this function:

◆ generate_ConstructWithSpread()

void QQmlJSTypePropagator::generate_ConstructWithSpread ( int  func,
int  argc,
int  argv 
)
override

Definition at line 1711 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.

◆ generate_ConvertThisToObject()

void QQmlJSTypePropagator::generate_ConvertThisToObject ( )
override

Definition at line 1956 of file qqmljstypepropagator.cpp.

References QQmlJSTypeResolver::globalType(), QQmlJSCompilePass::m_typeResolver, QQmlJSTypeResolver::qObjectType(), and QQmlJSCompilePass::This.

+ Here is the call graph for this function:

◆ generate_CreateCallContext()

void QQmlJSTypePropagator::generate_CreateCallContext ( )
override

Definition at line 1779 of file qqmljstypepropagator.cpp.

◆ generate_CreateClass()

void QQmlJSTypePropagator::generate_CreateClass ( int  classIndex,
int  heritage,
int  computedNames 
)
override

Definition at line 1932 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.

◆ generate_CreateMappedArgumentsObject()

void QQmlJSTypePropagator::generate_CreateMappedArgumentsObject ( )
override

Definition at line 1940 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED.

◆ generate_CreateRestParameter()

void QQmlJSTypePropagator::generate_CreateRestParameter ( int  argIndex)
override

Definition at line 1950 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.

◆ generate_CreateUnmappedArgumentsObject()

void QQmlJSTypePropagator::generate_CreateUnmappedArgumentsObject ( )
override

Definition at line 1945 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED.

◆ generate_DeadTemporalZoneCheck()

void QQmlJSTypePropagator::generate_DeadTemporalZoneCheck ( int  name)
override

Definition at line 1741 of file qqmljstypepropagator.cpp.

References QQmlJSTypeResolver::emptyType(), QQmlJSTypeResolver::equals(), QQmlJSCompilePass::m_jsUnitGenerator, QQmlJSCompilePass::m_typeResolver, QQmlJSTypeResolver::registerContains(), QQmlJSCompilePass::setError(), and QV4::Compiler::JSUnitGenerator::stringForIndex().

+ Here is the call graph for this function:

◆ generate_Debug()

void QQmlJSTypePropagator::generate_Debug ( )
override

Definition at line 123 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED.

◆ generate_DeclareVar()

void QQmlJSTypePropagator::generate_DeclareVar ( int  varName,
int  isDeletable 
)
override

Definition at line 1884 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.

◆ generate_Decrement()

void QQmlJSTypePropagator::generate_Decrement ( )
override

Definition at line 2291 of file qqmljstypepropagator.cpp.

References QQmlJSTypeResolver::Decrement.

◆ generate_DefineArray()

void QQmlJSTypePropagator::generate_DefineArray ( int  argc,
int  args 
)
override

Definition at line 1891 of file qqmljstypepropagator.cpp.

References args, QQmlJSTypeResolver::globalType(), i, QQmlJSCompilePass::m_typeResolver, QQmlJSTypeResolver::tracked(), QQmlJSTypeResolver::variantListType(), and QQmlJSTypeResolver::varType().

+ Here is the call graph for this function:

◆ generate_DefineObjectLiteral()

void QQmlJSTypePropagator::generate_DefineObjectLiteral ( int  internalClassId,
int  argc,
int  args 
)
override

Definition at line 1902 of file qqmljstypepropagator.cpp.

References args, QQmlJSTypeResolver::globalType(), i, QV4::Compiler::JSUnitGenerator::jsClassSize(), QQmlJSCompilePass::m_jsUnitGenerator, QQmlJSCompilePass::m_typeResolver, Q_ASSERT, QQmlJSTypeResolver::stringType(), QQmlJSTypeResolver::tracked(), QQmlJSTypeResolver::variantMapType(), and QQmlJSTypeResolver::varType().

+ Here is the call graph for this function:

◆ generate_DeleteName()

void QQmlJSTypePropagator::generate_DeleteName ( int  name)
override

Definition at line 1867 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.

◆ generate_DeleteProperty()

void QQmlJSTypePropagator::generate_DeleteProperty ( int  base,
int  index 
)
override

Definition at line 1860 of file qqmljstypepropagator.cpp.

References base, INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.

◆ generate_DestructureRestElement()

void QQmlJSTypePropagator::generate_DestructureRestElement ( )
override

Definition at line 1855 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED.

◆ generate_Div()

void QQmlJSTypePropagator::generate_Div ( int  lhs)
override

Definition at line 2399 of file qqmljstypepropagator.cpp.

References QSOperator::Div.

◆ generate_Exp()

void QQmlJSTypePropagator::generate_Exp ( int  lhs)
override

Definition at line 2389 of file qqmljstypepropagator.cpp.

References QSOperator::Exp.

◆ generate_GetException()

void QQmlJSTypePropagator::generate_GetException ( )
override

Definition at line 1768 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED.

◆ generate_GetIterator()

void QQmlJSTypePropagator::generate_GetIterator ( int  iterator)
override

Definition at line 1829 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.

◆ generate_GetLookup()

void QQmlJSTypePropagator::generate_GetLookup ( int  index)
override

Definition at line 908 of file qqmljstypepropagator.cpp.

References QV4::Compiler::JSUnitGenerator::lookupName(), and QQmlJSCompilePass::m_jsUnitGenerator.

+ Here is the call graph for this function:

◆ generate_GetOptionalLookup()

void QQmlJSTypePropagator::generate_GetOptionalLookup ( int  index,
int  offset 
)
override

Definition at line 913 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.

◆ generate_GetTemplateObject()

void QQmlJSTypePropagator::generate_GetTemplateObject ( int  index)
override

Definition at line 2425 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.

◆ generate_Increment()

void QQmlJSTypePropagator::generate_Increment ( )
override

Definition at line 2286 of file qqmljstypepropagator.cpp.

References QQmlJSTypeResolver::Increment.

◆ generate_InitializeBlockDeadTemporalZone()

void QQmlJSTypePropagator::generate_InitializeBlockDeadTemporalZone ( int  firstReg,
int  count 
)
override

Definition at line 2414 of file qqmljstypepropagator.cpp.

References QQmlJSTypeResolver::emptyType(), QQmlJSTypeResolver::globalType(), and QQmlJSCompilePass::m_typeResolver.

+ Here is the call graph for this function:

◆ generate_IteratorClose()

void QQmlJSTypePropagator::generate_IteratorClose ( int  done)
override

Definition at line 1849 of file qqmljstypepropagator.cpp.

References done, INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.

◆ generate_IteratorNext()

void QQmlJSTypePropagator::generate_IteratorNext ( int  value,
int  done 
)
override

Definition at line 1835 of file qqmljstypepropagator.cpp.

References done, INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.

◆ generate_IteratorNextForYieldStar()

void QQmlJSTypePropagator::generate_IteratorNextForYieldStar ( int  iterator,
int  object 
)
override

Definition at line 1842 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.

◆ generate_Jump()

void QQmlJSTypePropagator::generate_Jump ( int  offset)
override

Definition at line 1971 of file qqmljstypepropagator.cpp.

◆ generate_JumpFalse()

void QQmlJSTypePropagator::generate_JumpFalse ( int  offset)
override

Definition at line 1991 of file qqmljstypepropagator.cpp.

References arg, QQmlJSTypeResolver::boolType(), QQmlJSTypeResolver::globalType(), QQmlJSCompilePass::m_typeResolver, and QQmlJSCompilePass::setError().

+ Here is the call graph for this function:

◆ generate_JumpNoException()

void QQmlJSTypePropagator::generate_JumpNoException ( int  offset)
override

Definition at line 2004 of file qqmljstypepropagator.cpp.

◆ generate_JumpNotUndefined()

void QQmlJSTypePropagator::generate_JumpNotUndefined ( int  offset)
override

Definition at line 2010 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.

◆ generate_JumpTrue()

void QQmlJSTypePropagator::generate_JumpTrue ( int  offset)
override

Definition at line 1978 of file qqmljstypepropagator.cpp.

References arg, QQmlJSTypeResolver::boolType(), QQmlJSTypeResolver::globalType(), QQmlJSCompilePass::m_typeResolver, and QQmlJSCompilePass::setError().

+ Here is the call graph for this function:

◆ generate_LoadClosure()

void QQmlJSTypePropagator::generate_LoadClosure ( int  value)
override

Definition at line 243 of file qqmljstypepropagator.cpp.

References QQmlJSTypeResolver::functionType(), QQmlJSTypeResolver::globalType(), QQmlJSCompilePass::m_typeResolver, and Q_UNUSED.

+ Here is the call graph for this function:

◆ generate_LoadConst()

void QQmlJSTypePropagator::generate_LoadConst ( int  index)
override

Definition at line 128 of file qqmljstypepropagator.cpp.

References QV4::Compiler::JSUnitGenerator::constant(), QQmlJSTypeResolver::globalType(), QQmlJSCompilePass::m_jsUnitGenerator, QQmlJSCompilePass::m_typeResolver, and QQmlJSTypeResolver::typeForConst().

+ Here is the call graph for this function:

◆ generate_LoadElement()

◆ generate_LoadFalse()

void QQmlJSTypePropagator::generate_LoadFalse ( )
override

Definition at line 144 of file qqmljstypepropagator.cpp.

References QQmlJSTypeResolver::boolType(), QQmlJSTypeResolver::globalType(), and QQmlJSCompilePass::m_typeResolver.

+ Here is the call graph for this function:

◆ generate_LoadGlobalLookup()

void QQmlJSTypePropagator::generate_LoadGlobalLookup ( int  index)
override

Definition at line 259 of file qqmljstypepropagator.cpp.

References generate_LoadName(), QV4::Compiler::JSUnitGenerator::lookupNameIndex(), and QQmlJSCompilePass::m_jsUnitGenerator.

+ Here is the call graph for this function:

◆ generate_LoadImport()

void QQmlJSTypePropagator::generate_LoadImport ( int  index)
override

Definition at line 197 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.

◆ generate_LoadInt()

void QQmlJSTypePropagator::generate_LoadInt ( int  value)
override

Definition at line 159 of file qqmljstypepropagator.cpp.

References QQmlJSTypeResolver::globalType(), QQmlJSTypeResolver::int32Type(), and QQmlJSCompilePass::m_typeResolver.

+ Here is the call graph for this function:

◆ generate_LoadLocal()

void QQmlJSTypePropagator::generate_LoadLocal ( int  index)
override

Definition at line 203 of file qqmljstypepropagator.cpp.

References QQmlJSTypeResolver::globalType(), QQmlJSTypeResolver::jsValueType(), QQmlJSCompilePass::m_typeResolver, and Q_UNUSED.

+ Here is the call graph for this function:

◆ generate_LoadName()

void QQmlJSTypePropagator::generate_LoadName ( int  nameIndex)
override

Definition at line 251 of file qqmljstypepropagator.cpp.

References QQmlJSCompilePass::m_function, QQmlJSCompilePass::m_jsUnitGenerator, QQmlJSCompilePass::m_typeResolver, QQmlJSCompilePass::Function::qmlScope, QQmlJSTypeResolver::scopedType(), QQmlJSCompilePass::setError(), and QV4::Compiler::JSUnitGenerator::stringForIndex().

Referenced by generate_LoadGlobalLookup().

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

◆ generate_LoadNull()

void QQmlJSTypePropagator::generate_LoadNull ( )
override

Definition at line 149 of file qqmljstypepropagator.cpp.

References QQmlJSTypeResolver::globalType(), QQmlJSCompilePass::m_typeResolver, and QQmlJSTypeResolver::nullType().

+ Here is the call graph for this function:

◆ generate_LoadOptionalProperty()

void QQmlJSTypePropagator::generate_LoadOptionalProperty ( int  name,
int  offset 
)
override

Definition at line 901 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.

◆ generate_LoadProperty()

void QQmlJSTypePropagator::generate_LoadProperty ( int  nameIndex)
override

Definition at line 896 of file qqmljstypepropagator.cpp.

References QQmlJSCompilePass::m_jsUnitGenerator, and QV4::Compiler::JSUnitGenerator::stringForIndex().

+ Here is the call graph for this function:

◆ generate_LoadQmlContextPropertyLookup()

◆ generate_LoadReg()

void QQmlJSTypePropagator::generate_LoadReg ( int  reg)
override

Definition at line 170 of file qqmljstypepropagator.cpp.

References QQmlJSCompilePass::Accumulator.

◆ generate_LoadRuntimeString()

void QQmlJSTypePropagator::generate_LoadRuntimeString ( int  stringId)
override

Definition at line 229 of file qqmljstypepropagator.cpp.

References QQmlJSTypeResolver::globalType(), QQmlJSCompilePass::m_typeResolver, Q_UNUSED, and QQmlJSTypeResolver::stringType().

+ Here is the call graph for this function:

◆ generate_LoadScopedLocal()

void QQmlJSTypePropagator::generate_LoadScopedLocal ( int  scope,
int  index 
)
override

Definition at line 215 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.

◆ generate_LoadSuperConstructor()

void QQmlJSTypePropagator::generate_LoadSuperConstructor ( )
override

Definition at line 1961 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED.

◆ generate_LoadSuperProperty()

void QQmlJSTypePropagator::generate_LoadSuperProperty ( int  property)
override

Definition at line 971 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, property, and Q_UNUSED.

◆ generate_LoadTrue()

void QQmlJSTypePropagator::generate_LoadTrue ( )
override

Definition at line 139 of file qqmljstypepropagator.cpp.

References QQmlJSTypeResolver::boolType(), QQmlJSTypeResolver::globalType(), and QQmlJSCompilePass::m_typeResolver.

+ Here is the call graph for this function:

◆ generate_LoadUndefined()

void QQmlJSTypePropagator::generate_LoadUndefined ( )
override

Definition at line 154 of file qqmljstypepropagator.cpp.

References QQmlJSTypeResolver::globalType(), QQmlJSCompilePass::m_typeResolver, and QQmlJSTypeResolver::voidType().

+ Here is the call graph for this function:

◆ generate_LoadZero()

void QQmlJSTypePropagator::generate_LoadZero ( )
override

Definition at line 134 of file qqmljstypepropagator.cpp.

References QQmlJSTypeResolver::globalType(), QQmlJSTypeResolver::int32Type(), and QQmlJSCompilePass::m_typeResolver.

+ Here is the call graph for this function:

◆ generate_Mod()

void QQmlJSTypePropagator::generate_Mod ( int  lhs)
override

Definition at line 2404 of file qqmljstypepropagator.cpp.

References QSOperator::Mod.

◆ generate_MoveConst()

void QQmlJSTypePropagator::generate_MoveConst ( int  constIndex,
int  destTemp 
)
override

Definition at line 164 of file qqmljstypepropagator.cpp.

References QV4::Compiler::JSUnitGenerator::constant(), QQmlJSTypeResolver::globalType(), QQmlJSCompilePass::m_jsUnitGenerator, QQmlJSCompilePass::m_typeResolver, and QQmlJSTypeResolver::typeForConst().

+ Here is the call graph for this function:

◆ generate_MoveReg()

void QQmlJSTypePropagator::generate_MoveReg ( int  srcReg,
int  destReg 
)
override

Definition at line 187 of file qqmljstypepropagator.cpp.

References QQmlJSCompilePass::InvalidRegister, and Q_ASSERT.

◆ generate_MoveRegExp()

void QQmlJSTypePropagator::generate_MoveRegExp ( int  regExpId,
int  destReg 
)
override

Definition at line 236 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.

◆ generate_Mul()

void QQmlJSTypePropagator::generate_Mul ( int  lhs)
override

Definition at line 2394 of file qqmljstypepropagator.cpp.

References QSOperator::Mul.

◆ generate_PopContext()

void QQmlJSTypePropagator::generate_PopContext ( )
override

Definition at line 1824 of file qqmljstypepropagator.cpp.

◆ generate_PopScriptContext()

void QQmlJSTypePropagator::generate_PopScriptContext ( )
override

Definition at line 1818 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED.

◆ generate_PushBlockContext()

void QQmlJSTypePropagator::generate_PushBlockContext ( int  index)
override

Definition at line 1798 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.

◆ generate_PushCatchContext()

void QQmlJSTypePropagator::generate_PushCatchContext ( int  index,
int  name 
)
override

Definition at line 1784 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED_IGNORE, and Q_UNUSED.

◆ generate_PushScriptContext()

void QQmlJSTypePropagator::generate_PushScriptContext ( int  index)
override

Definition at line 1811 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.

◆ generate_PushWithContext()

void QQmlJSTypePropagator::generate_PushWithContext ( )
override

Definition at line 1792 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED.

◆ generate_Resume()

void QQmlJSTypePropagator::generate_Resume ( int  )
override

Definition at line 993 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED.

◆ generate_Ret()

◆ generate_SetException()

void QQmlJSTypePropagator::generate_SetException ( )
override

Definition at line 1773 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED.

◆ generate_SetLookup()

void QQmlJSTypePropagator::generate_SetLookup ( int  index,
int  base 
)
override

Definition at line 966 of file qqmljstypepropagator.cpp.

References base, generate_StoreProperty(), QV4::Compiler::JSUnitGenerator::lookupNameIndex(), and QQmlJSCompilePass::m_jsUnitGenerator.

+ Here is the call graph for this function:

◆ generate_SetUnwindHandler()

void QQmlJSTypePropagator::generate_SetUnwindHandler ( int  offset)
override

Definition at line 1720 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED_IGNORE, and Q_UNUSED.

◆ generate_Shl()

void QQmlJSTypePropagator::generate_Shl ( int  lhs)
override

Definition at line 2348 of file qqmljstypepropagator.cpp.

References QSOperator::LShift.

◆ generate_ShlConst()

void QQmlJSTypePropagator::generate_ShlConst ( int  rhs)
override

Definition at line 2383 of file qqmljstypepropagator.cpp.

References QSOperator::LShift, and Q_UNUSED.

◆ generate_Shr()

void QQmlJSTypePropagator::generate_Shr ( int  lhs)
override

Definition at line 2343 of file qqmljstypepropagator.cpp.

References QSOperator::RShift.

◆ generate_ShrConst()

void QQmlJSTypePropagator::generate_ShrConst ( int  rhs)
override

Definition at line 2377 of file qqmljstypepropagator.cpp.

References Q_UNUSED, and QSOperator::RShift.

◆ generate_StoreElement()

void QQmlJSTypePropagator::generate_StoreElement ( int  base,
int  index 
)
override

◆ generate_StoreLocal()

void QQmlJSTypePropagator::generate_StoreLocal ( int  index)
override

Definition at line 209 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.

◆ generate_StoreNameCommon()

void QQmlJSTypePropagator::generate_StoreNameCommon ( int  nameIndex)

As far as type propagation is involved, StoreNameSloppy and StoreNameStrict are completely the same StoreNameStrict is rejecting a few writes (where the variable was not defined before) that would work in a sloppy context in JS, but the compiler would always reject this. And for type propagation, this does not matter at all. nameIndex is the index in the string table corresponding to the name which we are storing

Definition at line 607 of file qqmljstypepropagator.cpp.

References arg, QQmlJSTypeResolver::canHoldUndefined(), QQmlJSTypeResolver::containedType(), QQmlJSScope::createQQmlSAElement(), QQmlSA::SourceLocationPrivate::createQQmlSASourceLocation(), QQmlJSTypeResolver::globalType(), QQmlJSScope::hasOwnProperty(), QQmlJSLogger::log(), QQmlJSCompilePass::m_function, QQmlJSCompilePass::m_jsUnitGenerator, QQmlJSCompilePass::m_logger, QQmlJSCompilePass::m_typeResolver, qmlReadOnlyProperty, QQmlJSCompilePass::Function::qmlScope, QQmlJSTypeResolver::registerIsStoredIn(), QQmlJSTypeResolver::scopedType(), QQmlJSCompilePass::setError(), QV4::Compiler::JSUnitGenerator::stringForIndex(), QQmlJSTypeResolver::varType(), and QQmlJSTypeResolver::voidType().

Referenced by generate_StoreNameSloppy(), and generate_StoreNameStrict().

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

◆ generate_StoreNameSloppy()

void QQmlJSTypePropagator::generate_StoreNameSloppy ( int  nameIndex)
override

Definition at line 667 of file qqmljstypepropagator.cpp.

References generate_StoreNameCommon().

+ Here is the call graph for this function:

◆ generate_StoreNameStrict()

void QQmlJSTypePropagator::generate_StoreNameStrict ( int  name)
override

Definition at line 672 of file qqmljstypepropagator.cpp.

References generate_StoreNameCommon().

+ Here is the call graph for this function:

◆ generate_StoreProperty()

void QQmlJSTypePropagator::generate_StoreProperty ( int  name,
int  base 
)
override

Definition at line 920 of file qqmljstypepropagator.cpp.

References arg, base, QQmlJSTypeResolver::containedType(), QQmlJSScope::createQQmlSAElement(), QQmlSA::SourceLocationPrivate::createQQmlSASourceLocation(), QQmlJSLogger::log(), QQmlJSCompilePass::m_function, QQmlJSCompilePass::m_jsUnitGenerator, QQmlJSCompilePass::m_logger, QQmlJSCompilePass::m_typeResolver, QQmlJSTypeResolver::memberType(), QQmlJSRegisterContent::ObjectAttached, property, qmlReadOnlyProperty, QQmlJSCompilePass::Function::qmlScope, QQmlJSCompilePass::setError(), and QV4::Compiler::JSUnitGenerator::stringForIndex().

Referenced by generate_SetLookup().

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

◆ generate_StoreReg()

void QQmlJSTypePropagator::generate_StoreReg ( int  reg)
override

Definition at line 179 of file qqmljstypepropagator.cpp.

◆ generate_StoreScopedLocal()

void QQmlJSTypePropagator::generate_StoreScopedLocal ( int  scope,
int  index 
)
override

Definition at line 222 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.

◆ generate_StoreSuperProperty()

void QQmlJSTypePropagator::generate_StoreSuperProperty ( int  property)
override

Definition at line 977 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, property, and Q_UNUSED.

◆ generate_Sub()

void QQmlJSTypePropagator::generate_Sub ( int  lhs)
override

Definition at line 2409 of file qqmljstypepropagator.cpp.

References QSOperator::Sub.

◆ generate_TailCall()

void QQmlJSTypePropagator::generate_TailCall ( int  func,
int  thisObject,
int  argc,
int  argv 
)
override

Definition at line 1690 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.

◆ generate_ThrowException()

void QQmlJSTypePropagator::generate_ThrowException ( )
override

Definition at line 1761 of file qqmljstypepropagator.cpp.

References QQmlJSTypeResolver::globalType(), QQmlJSTypeResolver::jsValueType(), and QQmlJSCompilePass::m_typeResolver.

+ Here is the call graph for this function:

◆ generate_ThrowOnNullOrUndefined()

void QQmlJSTypePropagator::generate_ThrowOnNullOrUndefined ( )
override

Definition at line 2420 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED.

◆ generate_ToObject()

void QQmlJSTypePropagator::generate_ToObject ( )
override

Definition at line 1966 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED.

◆ generate_TypeofName()

void QQmlJSTypePropagator::generate_TypeofName ( int  name)
override

Definition at line 1873 of file qqmljstypepropagator.cpp.

References QQmlJSTypeResolver::globalType(), QQmlJSCompilePass::m_typeResolver, Q_UNUSED, and QQmlJSTypeResolver::stringType().

+ Here is the call graph for this function:

◆ generate_TypeofValue()

void QQmlJSTypePropagator::generate_TypeofValue ( )
override

Definition at line 1879 of file qqmljstypepropagator.cpp.

References QQmlJSTypeResolver::globalType(), QQmlJSCompilePass::m_typeResolver, and QQmlJSTypeResolver::stringType().

+ Here is the call graph for this function:

◆ generate_UCompl()

void QQmlJSTypePropagator::generate_UCompl ( )
override

Definition at line 2281 of file qqmljstypepropagator.cpp.

References QQmlJSTypeResolver::Complement.

◆ generate_UMinus()

void QQmlJSTypePropagator::generate_UMinus ( )
override

Definition at line 2276 of file qqmljstypepropagator.cpp.

References QQmlJSTypeResolver::Minus.

◆ generate_UNot()

void QQmlJSTypePropagator::generate_UNot ( )
override

Definition at line 2266 of file qqmljstypepropagator.cpp.

References QQmlJSTypeResolver::Not.

◆ generate_UnwindDispatch()

void QQmlJSTypePropagator::generate_UnwindDispatch ( )
override

Definition at line 1727 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED_IGNORE.

◆ generate_UnwindToLabel()

void QQmlJSTypePropagator::generate_UnwindToLabel ( int  level,
int  offset 
)
override

Definition at line 1733 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.

◆ generate_UPlus()

void QQmlJSTypePropagator::generate_UPlus ( )
override

Definition at line 2271 of file qqmljstypepropagator.cpp.

References QQmlJSTypeResolver::Plus.

◆ generate_UShr()

void QQmlJSTypePropagator::generate_UShr ( int  lhs)
override

Definition at line 2338 of file qqmljstypepropagator.cpp.

References QSOperator::URShift.

◆ generate_UShrConst()

void QQmlJSTypePropagator::generate_UShrConst ( int  rhsConst)
override

Definition at line 2371 of file qqmljstypepropagator.cpp.

References Q_UNUSED, and QSOperator::URShift.

◆ generate_Yield()

void QQmlJSTypePropagator::generate_Yield ( )
override

Definition at line 983 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED.

◆ generate_YieldStar()

void QQmlJSTypePropagator::generate_YieldStar ( )
override

Definition at line 988 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED.

◆ run()

QQmlJSCompilePass::InstructionAnnotations QQmlJSTypePropagator::run ( const Function m_function,
QQmlJS::DiagnosticMessage error 
)

◆ startInstruction()


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