Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
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, BasicBlocks basicBlocks={}, InstructionAnnotations annotations={}, QQmlSA::PassManager *passManager=nullptr)
 
BlocksAndAnnotations 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 offset) override
 
void generate_IteratorNextForYieldStar (int iterator, int object, int offset) override
 
void generate_IteratorClose () 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)
 
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, BasicBlocks basicBlocks={}, InstructionAnnotations annotations={})
 
- 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 BasicBlocks = QFlatMap<int, BasicBlock>
 
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 () override
 
void generate_IteratorNext (int, int) override
 
void generate_IteratorNextForYieldStar (int, 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
 
- 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
 
BasicBlocks m_basicBlocks
 
InstructionAnnotations m_annotations
 
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,
BasicBlocks basicBlocks = {},
InstructionAnnotations annotations = {},
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 )

Definition at line 695 of file qqmljstypepropagator.cpp.

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

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 2543 of file qqmljstypepropagator.cpp.

References QSOperator::Add.

◆ generate_As()

◆ generate_BitAnd()

void QQmlJSTypePropagator::generate_BitAnd ( int lhs)
override

Definition at line 2548 of file qqmljstypepropagator.cpp.

References QSOperator::BitAnd.

◆ generate_BitAndConst()

void QQmlJSTypePropagator::generate_BitAndConst ( int rhsConst)
override

Definition at line 2578 of file qqmljstypepropagator.cpp.

References QSOperator::BitAnd, and Q_UNUSED.

◆ generate_BitOr()

void QQmlJSTypePropagator::generate_BitOr ( int lhs)
override

Definition at line 2553 of file qqmljstypepropagator.cpp.

References QSOperator::BitOr.

◆ generate_BitOrConst()

void QQmlJSTypePropagator::generate_BitOrConst ( int rhsConst)
override

Definition at line 2584 of file qqmljstypepropagator.cpp.

References QSOperator::BitOr, and Q_UNUSED.

◆ generate_BitXor()

void QQmlJSTypePropagator::generate_BitXor ( int lhs)
override

Definition at line 2558 of file qqmljstypepropagator.cpp.

References QSOperator::BitXor.

◆ generate_BitXorConst()

void QQmlJSTypePropagator::generate_BitXorConst ( int rhsConst)
override

Definition at line 2590 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 1821 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 1783 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 1788 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, Q_UNUSED, and QQmlJSCompilePass::State::setHasSideEffects().

+ Here is the call graph for this function:

◆ 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 1777 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 1826 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 1094 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, Q_UNUSED, and QQmlJSCompilePass::State::setHasSideEffects().

+ Here is the call graph for this function:

◆ generate_CallWithReceiver()

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

Definition at line 1103 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, Q_UNUSED, and QQmlJSCompilePass::State::setHasSideEffects().

+ Here is the call graph for this function:

◆ generate_CallWithSpread()

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

Definition at line 1833 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, Q_UNUSED, and QQmlJSCompilePass::State::setHasSideEffects().

+ Here is the call graph for this function:

◆ generate_CheckException()

void QQmlJSTypePropagator::generate_CheckException ( )
override

Definition at line 2240 of file qqmljstypepropagator.cpp.

References QQmlJSCompilePass::State::setHasSideEffects().

+ Here is the call graph for this function:

◆ generate_CloneBlockContext()

void QQmlJSTypePropagator::generate_CloneBlockContext ( )
override

Definition at line 2014 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, and QQmlJSCompilePass::State::setHasSideEffects().

+ Here is the call graph for this function:

◆ generate_CmpEq()

void QQmlJSTypePropagator::generate_CmpEq ( int lhs)
override

Definition at line 2355 of file qqmljstypepropagator.cpp.

References QSOperator::Equal.

◆ generate_CmpEqInt()

void QQmlJSTypePropagator::generate_CmpEqInt ( int lhsConst)
override

Definition at line 2337 of file qqmljstypepropagator.cpp.

References QQmlJSCompilePass::State::accumulatorIn(), 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 2325 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 2373 of file qqmljstypepropagator.cpp.

References QSOperator::Ge.

◆ generate_CmpGt()

void QQmlJSTypePropagator::generate_CmpGt ( int lhs)
override

Definition at line 2367 of file qqmljstypepropagator.cpp.

References QSOperator::Gt.

◆ generate_CmpIn()

void QQmlJSTypePropagator::generate_CmpIn ( int lhs)
override

Definition at line 2403 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 2415 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.

◆ generate_CmpLe()

void QQmlJSTypePropagator::generate_CmpLe ( int lhs)
override

Definition at line 2385 of file qqmljstypepropagator.cpp.

References QSOperator::Le.

◆ generate_CmpLt()

void QQmlJSTypePropagator::generate_CmpLt ( int lhs)
override

Definition at line 2379 of file qqmljstypepropagator.cpp.

References QSOperator::Lt.

◆ generate_CmpNe()

void QQmlJSTypePropagator::generate_CmpNe ( int lhs)
override

Definition at line 2361 of file qqmljstypepropagator.cpp.

References QSOperator::NotEqual.

◆ generate_CmpNeInt()

void QQmlJSTypePropagator::generate_CmpNeInt ( int lhs)
override

Definition at line 2346 of file qqmljstypepropagator.cpp.

References QQmlJSCompilePass::State::accumulatorIn(), 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 2331 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 2391 of file qqmljstypepropagator.cpp.

References QSOperator::StrictEqual.

◆ generate_CmpStrictNotEqual()

void QQmlJSTypePropagator::generate_CmpStrictNotEqual ( int lhs)
override

Definition at line 2397 of file qqmljstypepropagator.cpp.

References QSOperator::StrictNotEqual.

◆ generate_Construct()

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

Definition at line 1896 of file qqmljstypepropagator.cpp.

References QQmlJSTypeResolver::globalType(), QQmlJSTypeResolver::jsGlobalObject(), QQmlJSTypeResolver::jsValueType(), QQmlJSCompilePass::m_typeResolver, QQmlJSScope::methods(), QQmlJSCompilePass::State::registers, and QQmlJSCompilePass::State::setHasSideEffects().

+ Here is the call graph for this function:

◆ generate_ConstructWithSpread()

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

Definition at line 1920 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, Q_UNUSED, and QQmlJSCompilePass::State::setHasSideEffects().

+ Here is the call graph for this function:

◆ generate_ConvertThisToObject()

void QQmlJSTypePropagator::generate_ConvertThisToObject ( )
override

Definition at line 2180 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 1988 of file qqmljstypepropagator.cpp.

References QQmlJSCompilePass::State::setHasSideEffects().

+ Here is the call graph for this function:

◆ generate_CreateClass()

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

Definition at line 2156 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.

◆ generate_CreateMappedArgumentsObject()

void QQmlJSTypePropagator::generate_CreateMappedArgumentsObject ( )
override

Definition at line 2164 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED.

◆ generate_CreateRestParameter()

void QQmlJSTypePropagator::generate_CreateRestParameter ( int argIndex)
override

Definition at line 2174 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.

◆ generate_CreateUnmappedArgumentsObject()

void QQmlJSTypePropagator::generate_CreateUnmappedArgumentsObject ( )
override

Definition at line 2169 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED.

◆ generate_DeadTemporalZoneCheck()

void QQmlJSTypePropagator::generate_DeadTemporalZoneCheck ( int name)
override

◆ generate_Debug()

void QQmlJSTypePropagator::generate_Debug ( )
override

Definition at line 132 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED.

◆ generate_DeclareVar()

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

Definition at line 2106 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.

◆ generate_Decrement()

void QQmlJSTypePropagator::generate_Decrement ( )
override

Definition at line 2516 of file qqmljstypepropagator.cpp.

References QQmlJSTypeResolver::Decrement.

◆ generate_DefineArray()

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

Definition at line 2113 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 2124 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 2089 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 2082 of file qqmljstypepropagator.cpp.

References base, INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.

◆ generate_DestructureRestElement()

void QQmlJSTypePropagator::generate_DestructureRestElement ( )
override

Definition at line 2077 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED.

◆ generate_Div()

void QQmlJSTypePropagator::generate_Div ( int lhs)
override

Definition at line 2624 of file qqmljstypepropagator.cpp.

References QSOperator::Div.

◆ generate_Exp()

void QQmlJSTypePropagator::generate_Exp ( int lhs)
override

Definition at line 2614 of file qqmljstypepropagator.cpp.

References QSOperator::Exp.

◆ generate_GetException()

void QQmlJSTypePropagator::generate_GetException ( )
override

Definition at line 1977 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED.

◆ generate_GetIterator()

void QQmlJSTypePropagator::generate_GetIterator ( int iterator)
override

Definition at line 2038 of file qqmljstypepropagator.cpp.

References QQmlJSCompilePass::State::accumulatorIn(), QV4::Moth::ByteCodeHandler::currentInstructionOffset(), QQmlJSTypeResolver::globalType(), QQmlJSRegisterContent::isList(), QQmlJSTypeResolver::iteratorPointer(), QQmlJSTypeResolver::jsValueType(), and QQmlJSCompilePass::m_typeResolver.

+ Here is the call graph for this function:

◆ generate_GetLookup()

void QQmlJSTypePropagator::generate_GetLookup ( int index)
override

Definition at line 981 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 986 of file qqmljstypepropagator.cpp.

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

+ Here is the call graph for this function:

◆ generate_GetTemplateObject()

void QQmlJSTypePropagator::generate_GetTemplateObject ( int index)
override

Definition at line 2650 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.

◆ generate_Increment()

void QQmlJSTypePropagator::generate_Increment ( )
override

Definition at line 2511 of file qqmljstypepropagator.cpp.

References QQmlJSTypeResolver::Increment.

◆ generate_InitializeBlockDeadTemporalZone()

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

Definition at line 2639 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 ( )
override

Definition at line 2072 of file qqmljstypepropagator.cpp.

◆ generate_IteratorNext()

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

Definition at line 2053 of file qqmljstypepropagator.cpp.

References QQmlJSCompilePass::State::accumulatorIn(), QQmlJSTypeResolver::globalType(), QQmlJSCompilePass::m_typeResolver, QQmlJSTypeResolver::merge(), QQmlJSCompilePass::State::setHasSideEffects(), QQmlJSTypeResolver::valueType(), and QQmlJSTypeResolver::voidType().

+ Here is the call graph for this function:

◆ generate_IteratorNextForYieldStar()

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

Definition at line 2064 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.

◆ generate_Jump()

void QQmlJSTypePropagator::generate_Jump ( int offset)
override

Definition at line 2195 of file qqmljstypepropagator.cpp.

References QQmlJSCompilePass::State::setHasSideEffects().

+ Here is the call graph for this function:

◆ generate_JumpFalse()

void QQmlJSTypePropagator::generate_JumpFalse ( int offset)
override

Definition at line 2215 of file qqmljstypepropagator.cpp.

References QQmlJSCompilePass::State::accumulatorIn(), arg, QQmlJSTypeResolver::boolType(), QQmlJSRegisterContent::descriptiveName(), QQmlJSTypeResolver::globalType(), QQmlJSCompilePass::m_typeResolver, QQmlJSCompilePass::setError(), and QQmlJSCompilePass::State::setHasSideEffects().

+ Here is the call graph for this function:

◆ generate_JumpNoException()

void QQmlJSTypePropagator::generate_JumpNoException ( int offset)
override

Definition at line 2228 of file qqmljstypepropagator.cpp.

References QQmlJSCompilePass::State::setHasSideEffects().

+ Here is the call graph for this function:

◆ generate_JumpNotUndefined()

void QQmlJSTypePropagator::generate_JumpNotUndefined ( int offset)
override

Definition at line 2234 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.

◆ generate_JumpTrue()

void QQmlJSTypePropagator::generate_JumpTrue ( int offset)
override

Definition at line 2202 of file qqmljstypepropagator.cpp.

References QQmlJSCompilePass::State::accumulatorIn(), arg, QQmlJSTypeResolver::boolType(), QQmlJSRegisterContent::descriptiveName(), QQmlJSTypeResolver::globalType(), QQmlJSCompilePass::m_typeResolver, QQmlJSCompilePass::setError(), and QQmlJSCompilePass::State::setHasSideEffects().

+ Here is the call graph for this function:

◆ generate_LoadClosure()

void QQmlJSTypePropagator::generate_LoadClosure ( int value)
override

Definition at line 252 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 137 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 153 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 268 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 206 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.

◆ generate_LoadInt()

void QQmlJSTypePropagator::generate_LoadInt ( int value)
override

Definition at line 168 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 212 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 260 of file qqmljstypepropagator.cpp.

References QQmlJSCompilePass::State::accumulatorOut(), QQmlJSRegisterContent::isValid(), 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 158 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 974 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.

◆ generate_LoadProperty()

void QQmlJSTypePropagator::generate_LoadProperty ( int nameIndex)
override

Definition at line 969 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 179 of file qqmljstypepropagator.cpp.

References QQmlJSCompilePass::Accumulator, QQmlJSCompilePass::State::addReadRegister(), QQmlJSCompilePass::State::setIsRename(), and QQmlJSCompilePass::State::setRegister().

+ Here is the call graph for this function:

◆ generate_LoadRuntimeString()

void QQmlJSTypePropagator::generate_LoadRuntimeString ( int stringId)
override

Definition at line 238 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 224 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.

◆ generate_LoadSuperConstructor()

void QQmlJSTypePropagator::generate_LoadSuperConstructor ( )
override

Definition at line 2185 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED.

◆ generate_LoadSuperProperty()

void QQmlJSTypePropagator::generate_LoadSuperProperty ( int property)
override

Definition at line 1067 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, property, and Q_UNUSED.

◆ generate_LoadTrue()

void QQmlJSTypePropagator::generate_LoadTrue ( )
override

Definition at line 148 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 163 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 143 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 2629 of file qqmljstypepropagator.cpp.

References QSOperator::Mod.

◆ generate_MoveConst()

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

Definition at line 173 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 196 of file qqmljstypepropagator.cpp.

References QQmlJSCompilePass::State::addReadRegister(), QQmlJSCompilePass::InvalidRegister, Q_ASSERT, QQmlJSCompilePass::State::setIsRename(), and QQmlJSCompilePass::State::setRegister().

+ Here is the call graph for this function:

◆ generate_MoveRegExp()

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

Definition at line 245 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.

◆ generate_Mul()

void QQmlJSTypePropagator::generate_Mul ( int lhs)
override

Definition at line 2619 of file qqmljstypepropagator.cpp.

References QSOperator::Mul.

◆ generate_PopContext()

void QQmlJSTypePropagator::generate_PopContext ( )
override

Definition at line 2033 of file qqmljstypepropagator.cpp.

References QQmlJSCompilePass::State::setHasSideEffects().

+ Here is the call graph for this function:

◆ generate_PopScriptContext()

void QQmlJSTypePropagator::generate_PopScriptContext ( )
override

Definition at line 2027 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, and QQmlJSCompilePass::State::setHasSideEffects().

+ Here is the call graph for this function:

◆ generate_PushBlockContext()

void QQmlJSTypePropagator::generate_PushBlockContext ( int index)
override

Definition at line 2007 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, Q_UNUSED, and QQmlJSCompilePass::State::setHasSideEffects().

+ Here is the call graph for this function:

◆ generate_PushCatchContext()

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

Definition at line 1993 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED_IGNORE, Q_UNUSED, and QQmlJSCompilePass::State::setHasSideEffects().

+ Here is the call graph for this function:

◆ generate_PushScriptContext()

void QQmlJSTypePropagator::generate_PushScriptContext ( int index)
override

Definition at line 2020 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, Q_UNUSED, and QQmlJSCompilePass::State::setHasSideEffects().

+ Here is the call graph for this function:

◆ generate_PushWithContext()

void QQmlJSTypePropagator::generate_PushWithContext ( )
override

Definition at line 2001 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, and QQmlJSCompilePass::State::setHasSideEffects().

+ Here is the call graph for this function:

◆ generate_Resume()

void QQmlJSTypePropagator::generate_Resume ( int )
override

Definition at line 1089 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED.

◆ generate_Ret()

◆ generate_SetException()

void QQmlJSTypePropagator::generate_SetException ( )
override

Definition at line 1982 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, and QQmlJSCompilePass::State::setHasSideEffects().

+ Here is the call graph for this function:

◆ generate_SetLookup()

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

Definition at line 1062 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 1929 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED_IGNORE, Q_UNUSED, and QQmlJSCompilePass::State::setHasSideEffects().

+ Here is the call graph for this function:

◆ generate_Shl()

void QQmlJSTypePropagator::generate_Shl ( int lhs)
override

Definition at line 2573 of file qqmljstypepropagator.cpp.

References QSOperator::LShift.

◆ generate_ShlConst()

void QQmlJSTypePropagator::generate_ShlConst ( int rhs)
override

Definition at line 2608 of file qqmljstypepropagator.cpp.

References QSOperator::LShift, and Q_UNUSED.

◆ generate_Shr()

void QQmlJSTypePropagator::generate_Shr ( int lhs)
override

Definition at line 2568 of file qqmljstypepropagator.cpp.

References QSOperator::RShift.

◆ generate_ShrConst()

void QQmlJSTypePropagator::generate_ShrConst ( int rhs)
override

Definition at line 2602 of file qqmljstypepropagator.cpp.

References Q_UNUSED, and QSOperator::RShift.

◆ generate_StoreElement()

◆ generate_StoreLocal()

void QQmlJSTypePropagator::generate_StoreLocal ( int index)
override

Definition at line 218 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 632 of file qqmljstypepropagator.cpp.

References QQmlJSCompilePass::State::accumulatorIn(), arg, QQmlJSTypeResolver::canHoldUndefined(), QQmlJSTypeResolver::globalType(), QQmlJSLogger::log(), QQmlJSCompilePass::m_function, QQmlJSCompilePass::m_jsUnitGenerator, QQmlJSCompilePass::m_logger, QQmlJSCompilePass::m_typeResolver, qmlReadOnlyProperty, QQmlJSCompilePass::Function::qmlScope, QQmlJSTypeResolver::registerIsStoredIn(), QQmlJSTypeResolver::scopedType(), QQmlJSCompilePass::setError(), QQmlJSCompilePass::State::setHasSideEffects(), 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 685 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 690 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 1008 of file qqmljstypepropagator.cpp.

References QQmlJSCompilePass::State::accumulatorIn(), arg, base, QQmlJSTypeResolver::canHoldUndefined(), QQmlJSRegisterContent::descriptiveName(), QQmlJSLogger::log(), QQmlJSCompilePass::m_jsUnitGenerator, QQmlJSCompilePass::m_logger, QQmlJSCompilePass::m_typeResolver, QQmlJSTypeResolver::memberType(), property, qmlReadOnlyProperty, QQmlJSCompilePass::State::registers, QQmlJSCompilePass::setError(), QQmlJSCompilePass::State::setHasSideEffects(), QV4::Compiler::JSUnitGenerator::stringForIndex(), and QQmlJSTypeResolver::varType().

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 188 of file qqmljstypepropagator.cpp.

References QQmlJSCompilePass::State::accumulatorIn(), QQmlJSCompilePass::State::addReadAccumulator(), QQmlJSCompilePass::State::setIsRename(), and QQmlJSCompilePass::State::setRegister().

+ Here is the call graph for this function:

◆ generate_StoreScopedLocal()

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

Definition at line 231 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, and Q_UNUSED.

◆ generate_StoreSuperProperty()

void QQmlJSTypePropagator::generate_StoreSuperProperty ( int property)
override

Definition at line 1073 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 2634 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 1843 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, Q_UNUSED, and QQmlJSCompilePass::State::setHasSideEffects().

+ Here is the call graph for this function:

◆ generate_ThrowException()

void QQmlJSTypePropagator::generate_ThrowException ( )
override

Definition at line 1970 of file qqmljstypepropagator.cpp.

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

+ Here is the call graph for this function:

◆ generate_ThrowOnNullOrUndefined()

void QQmlJSTypePropagator::generate_ThrowOnNullOrUndefined ( )
override

Definition at line 2645 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED.

◆ generate_ToObject()

void QQmlJSTypePropagator::generate_ToObject ( )
override

Definition at line 2190 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED.

◆ generate_TypeofName()

void QQmlJSTypePropagator::generate_TypeofName ( int name)
override

Definition at line 2095 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 2101 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 2506 of file qqmljstypepropagator.cpp.

References QQmlJSTypeResolver::Complement.

◆ generate_UMinus()

void QQmlJSTypePropagator::generate_UMinus ( )
override

Definition at line 2501 of file qqmljstypepropagator.cpp.

References QQmlJSTypeResolver::Minus.

◆ generate_UNot()

void QQmlJSTypePropagator::generate_UNot ( )
override

Definition at line 2491 of file qqmljstypepropagator.cpp.

References QQmlJSTypeResolver::Not.

◆ generate_UnwindDispatch()

void QQmlJSTypePropagator::generate_UnwindDispatch ( )
override

Definition at line 1936 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED_IGNORE, and QQmlJSCompilePass::State::setHasSideEffects().

+ Here is the call graph for this function:

◆ generate_UnwindToLabel()

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

Definition at line 1942 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED, Q_UNUSED, and QQmlJSCompilePass::State::setHasSideEffects().

+ Here is the call graph for this function:

◆ generate_UPlus()

void QQmlJSTypePropagator::generate_UPlus ( )
override

Definition at line 2496 of file qqmljstypepropagator.cpp.

References QQmlJSTypeResolver::Plus.

◆ generate_UShr()

void QQmlJSTypePropagator::generate_UShr ( int lhs)
override

Definition at line 2563 of file qqmljstypepropagator.cpp.

References QSOperator::URShift.

◆ generate_UShrConst()

void QQmlJSTypePropagator::generate_UShrConst ( int rhsConst)
override

Definition at line 2596 of file qqmljstypepropagator.cpp.

References Q_UNUSED, and QSOperator::URShift.

◆ generate_Yield()

void QQmlJSTypePropagator::generate_Yield ( )
override

Definition at line 1079 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED.

◆ generate_YieldStar()

void QQmlJSTypePropagator::generate_YieldStar ( )
override

Definition at line 1084 of file qqmljstypepropagator.cpp.

References INSTR_PROLOGUE_NOT_IMPLEMENTED.

◆ run()

◆ startInstruction()


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