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

#include <qqmljstypepropagator_p.h>

Inheritance diagram for QQmlJSTypePropagator:
Collaboration diagram for QQmlJSTypePropagator:

Classes

struct  ExpectedRegisterState
struct  PassState

Public Member Functions

BlocksAndAnnotations run (const Function *m_function)
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_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
Verdict startInstruction (QV4::Moth::Instr::Type instr) override
void endInstruction (QV4::Moth::Instr::Type instr) override
 QQmlJSCompilePass (const QV4::Compiler::JSUnitGenerator *jsUnitGenerator, const QQmlJSTypeResolver *typeResolver, QQmlJSLogger *logger, const BasicBlocks &basicBlocks={}, const InstructionAnnotations &annotations={})
Public Member Functions inherited from QQmlJSCompilePass
 QQmlJSCompilePass (const QV4::Compiler::JSUnitGenerator *jsUnitGenerator, const QQmlJSTypeResolver *typeResolver, QQmlJSLogger *logger, const BasicBlocks &basicBlocks={}, const 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

Protected Types

enum  PropertyResolution { PropertyMissing , PropertyTypeUnresolved , PropertyFullyResolved }
Protected Types inherited from QV4::Moth::ByteCodeHandler
enum  Verdict { ProcessInstruction , SkipInstruction }

Protected Member Functions

virtual void handleUnqualifiedAccess (const QString &name, bool isMethod) const
virtual void handleUnqualifiedAccessAndContextProperties (const QString &name, bool isMethod) const
virtual void checkDeprecated (QQmlJSScope::ConstPtr scope, const QString &name, bool isMethod) const
virtual bool isCallingProperty (QQmlJSScope::ConstPtr scope, const QString &name) const
virtual bool handleImportNamespaceLookup (const QString &propertyName)
virtual void handleLookupError (const QString &propertyName)
virtual bool checkForEnumProblems (QQmlJSRegisterContent base, const QString &propertyName)
virtual void warnAboutTypeCoercion (int lhs)
PropertyResolution propertyResolution (QQmlJSScope::ConstPtr scope, const QString &type) const
void checkConversion (QQmlJSRegisterContent from, QQmlJSRegisterContent to)
void generateUnaryArithmeticOperation (QQmlJSTypeResolver::UnaryOperator op)
QQmlJSRegisterContent propagateBinaryOperation (QSOperator::Op op, int lhs)
void generateBinaryArithmeticOperation (QSOperator::Op op, int lhs)
void generateBinaryConstArithmeticOperation (QSOperator::Op op)
virtual void generate_StoreNameCommon (int nameIndex)
virtual void propagateCall (const QList< QQmlJSMetaMethod > &methods, int argc, int argv, QQmlJSRegisterContent scope)
virtual void propagateTranslationMethod_SAcheck (const QString &methodName)
bool propagateTranslationMethod (const QList< QQmlJSMetaMethod > &methods, int argc, int argv)
void propagateStringArgCall (QQmlJSRegisterContent base, int argv)
bool propagateArrayMethod (const QString &name, int argc, int argv, QQmlJSRegisterContent valueType)
virtual void propagatePropertyLookup (const QString &name, int lookupIndex=QQmlJSRegisterContent::InvalidLookupIndex)
void propagateScopeLookupCall (const QString &functionName, int argc, int argv)
void saveRegisterStateForJump (int offset)
bool canConvertFromTo (QQmlJSRegisterContent from, QQmlJSRegisterContent to)
bool canConvertFromTo (QQmlJSRegisterContent from, const QQmlJSScope::ConstPtr &to)
QString registerName (int registerIndex) const
QQmlJSRegisterContent checkedInputRegister (int reg)
QQmlJSMetaMethod bestMatchForCall (const QList< QQmlJSMetaMethod > &methods, int argc, int argv, QStringList *errors)
void setAccumulator (QQmlJSRegisterContent content)
void setRegister (int index, QQmlJSRegisterContent content)
void mergeRegister (int index, const VirtualRegister &a, const VirtualRegister &b)
void addReadRegister (int index)
void addReadRegister (int index, QQmlJSRegisterContent convertTo)
void addReadRegister (int index, const QQmlJSScope::ConstPtr &convertTo)
void addReadAccumulator ()
void addReadAccumulator (QQmlJSRegisterContent convertTo)
void addReadAccumulator (const QQmlJSScope::ConstPtr &convertTo)
bool populatesAccumulator (QV4::Moth::Instr::Type instr) const
bool isNoop (QV4::Moth::Instr::Type instr) const
void recordEqualsNullType ()
void recordEqualsIntType ()
void recordEqualsType (int lhs)
void recordCompareType (int lhs)
void generate_CallProperty_SCMath (const QString &name, int base, int arcg, int argv)
void generate_CallProperty_SCconsole (const QString &name, int base, int argc, int argv)
void generate_Construct_SCDate (const QQmlJSMetaMethod &ctor, int argc, int argv)
void generate_Construct_SCArray (const QQmlJSMetaMethod &ctor, int argc, int argv)
void addError (const QString &message)
void setVarAccumulatorAndError ()
Protected Member Functions inherited from QQmlJSCompilePass
int firstRegisterIndex () const
bool isArgument (int registerIndex) const
QQmlJSRegisterContent argumentType (int registerIndex) const
bool isQmlScopeObject (QQmlJSRegisterContent content)
State initialState (const Function *function)
State nextStateFromAnnotations (const State &oldState, const InstructionAnnotations &annotations)
QList< SourceLocationTable::Entry >::const_iterator sourceLocationEntry (int instructionOffset) const
QQmlJS::SourceLocation sourceLocation (int instructionOffset) const
QQmlJS::SourceLocation nonEmptySourceLocation (int instructionOffset) const
QQmlJS::SourceLocation currentSourceLocation () const
QQmlJS::SourceLocation currentNonEmptySourceLocation () const
QQmlJS::SourceLocation currentFunctionSourceLocation () const
void addError (const QString &message, int instructionOffset)
void addSkip (const QString &message, int instructionOffset)
void addError (const QString &message)
void addSkip (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

static bool isLoggingMethod (const QString &consoleMethod)
Static Protected Member Functions inherited from QQmlJSCompilePass
static bool instructionManipulatesContext (QV4::Moth::Instr::Type type)

Protected Attributes

QQmlJSRegisterContent m_returnType
QMultiHash< int, ExpectedRegisterStatem_jumpOriginRegisterStateByTargetInstructionOffset
InstructionAnnotations m_prevStateAnnotations
PassState m_state
Protected Attributes inherited from QQmlJSCompilePass
const QV4::Compiler::JSUnitGeneratorm_jsUnitGenerator = nullptr
const QQmlJSTypeResolverm_typeResolver = nullptr
QQmlJSRegisterContentPoolm_pool = nullptr
QQmlJSLoggerm_logger = nullptr
const Functionm_function = nullptr
BasicBlocks m_basicBlocks
InstructionAnnotations m_annotations

Additional Inherited Members

Public Types inherited from QQmlJSCompilePass
enum  RegisterShortcuts {
  InvalidRegister = -1 , CurrentFunction = QV4::CallData::Function , Context = QV4::CallData::Context , Accumulator = QV4::CallData::Accumulator ,
  This = QV4::CallData::This , NewTarget = QV4::CallData::NewTarget , Argc = QV4::CallData::Argc , 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>

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 28 of file qqmljstypepropagator_p.h.

Member Enumeration Documentation

◆ PropertyResolution

Enumerator
PropertyMissing 
PropertyTypeUnresolved 
PropertyFullyResolved 

Definition at line 198 of file qqmljstypepropagator_p.h.

Member Function Documentation

◆ addError()

void QQmlJSTypePropagator::addError ( const QString & message)
inlineprotected

Definition at line 273 of file qqmljstypepropagator_p.h.

◆ addReadAccumulator() [1/3]

void QQmlJSTypePropagator::addReadAccumulator ( )
inlineprotected

Definition at line 242 of file qqmljstypepropagator_p.h.

◆ addReadAccumulator() [2/3]

void QQmlJSTypePropagator::addReadAccumulator ( const QQmlJSScope::ConstPtr & convertTo)
inlineprotected

Definition at line 252 of file qqmljstypepropagator_p.h.

◆ addReadAccumulator() [3/3]

void QQmlJSTypePropagator::addReadAccumulator ( QQmlJSRegisterContent convertTo)
inlineprotected

Definition at line 247 of file qqmljstypepropagator_p.h.

◆ addReadRegister() [1/3]

void QQmlJSTypePropagator::addReadRegister ( int index)
protected

Definition at line 1139 of file qqmljstypepropagator.cpp.

◆ addReadRegister() [2/3]

void QQmlJSTypePropagator::addReadRegister ( int index,
const QQmlJSScope::ConstPtr & convertTo )
protected

Definition at line 1156 of file qqmljstypepropagator.cpp.

◆ addReadRegister() [3/3]

void QQmlJSTypePropagator::addReadRegister ( int index,
QQmlJSRegisterContent convertTo )
protected

Definition at line 1145 of file qqmljstypepropagator.cpp.

◆ bestMatchForCall()

QQmlJSMetaMethod QQmlJSTypePropagator::bestMatchForCall ( const QList< QQmlJSMetaMethod > & methods,
int argc,
int argv,
QStringList * errors )
protected

Definition at line 955 of file qqmljstypepropagator.cpp.

◆ canConvertFromTo() [1/2]

bool QQmlJSTypePropagator::canConvertFromTo ( QQmlJSRegisterContent from,
const QQmlJSScope::ConstPtr & to )
protected

Definition at line 2834 of file qqmljstypepropagator.cpp.

◆ canConvertFromTo() [2/2]

bool QQmlJSTypePropagator::canConvertFromTo ( QQmlJSRegisterContent from,
QQmlJSRegisterContent to )
protected

Definition at line 2828 of file qqmljstypepropagator.cpp.

◆ checkConversion()

void QQmlJSTypePropagator::checkConversion ( QQmlJSRegisterContent from,
QQmlJSRegisterContent to )
protected

Definition at line 2269 of file qqmljstypepropagator.cpp.

◆ checkDeprecated()

void QQmlJSTypePropagator::checkDeprecated ( QQmlJSScope::ConstPtr scope,
const QString & name,
bool isMethod ) const
protectedvirtual

Reimplemented in QQmlJSLinterTypePropagator.

Definition at line 269 of file qqmljstypepropagator.cpp.

◆ checkedInputRegister()

QQmlJSRegisterContent QQmlJSTypePropagator::checkedInputRegister ( int reg)
protected

Definition at line 2796 of file qqmljstypepropagator.cpp.

◆ checkForEnumProblems()

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

Reimplemented in QQmlJSLinterTypePropagator.

Definition at line 424 of file qqmljstypepropagator.cpp.

◆ endInstruction()

void QQmlJSTypePropagator::endInstruction ( QV4::Moth::Instr::Type instr)
overridevirtual

Implements QV4::Moth::ByteCodeHandler.

Definition at line 2662 of file qqmljstypepropagator.cpp.

◆ generate_Add()

void QQmlJSTypePropagator::generate_Add ( int lhs)
override

Definition at line 2339 of file qqmljstypepropagator.cpp.

◆ generate_As()

void QQmlJSTypePropagator::generate_As ( int lhs)
override

Definition at line 2222 of file qqmljstypepropagator.cpp.

◆ generate_BitAnd()

void QQmlJSTypePropagator::generate_BitAnd ( int lhs)
override

Definition at line 2344 of file qqmljstypepropagator.cpp.

◆ generate_BitAndConst()

void QQmlJSTypePropagator::generate_BitAndConst ( int rhsConst)
override

Definition at line 2374 of file qqmljstypepropagator.cpp.

◆ generate_BitOr()

void QQmlJSTypePropagator::generate_BitOr ( int lhs)
override

Definition at line 2349 of file qqmljstypepropagator.cpp.

◆ generate_BitOrConst()

void QQmlJSTypePropagator::generate_BitOrConst ( int rhsConst)
override

Definition at line 2380 of file qqmljstypepropagator.cpp.

◆ generate_BitXor()

void QQmlJSTypePropagator::generate_BitXor ( int lhs)
override

Definition at line 2354 of file qqmljstypepropagator.cpp.

◆ generate_BitXorConst()

void QQmlJSTypePropagator::generate_BitXorConst ( int rhsConst)
override

Definition at line 2386 of file qqmljstypepropagator.cpp.

◆ generate_CallGlobalLookup()

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

Definition at line 1580 of file qqmljstypepropagator.cpp.

◆ generate_CallName()

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

Definition at line 1537 of file qqmljstypepropagator.cpp.

◆ generate_CallPossiblyDirectEval()

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

Definition at line 1542 of file qqmljstypepropagator.cpp.

◆ generate_CallProperty()

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

Definition at line 871 of file qqmljstypepropagator.cpp.

◆ generate_CallProperty_SCconsole()

void QQmlJSTypePropagator::generate_CallProperty_SCconsole ( const QString & name,
int base,
int argc,
int argv )
protected

Definition at line 820 of file qqmljstypepropagator.cpp.

◆ generate_CallProperty_SCMath()

void QQmlJSTypePropagator::generate_CallProperty_SCMath ( const QString & name,
int base,
int arcg,
int argv )
protected

Definition at line 785 of file qqmljstypepropagator.cpp.

◆ generate_CallPropertyLookup()

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

Definition at line 1531 of file qqmljstypepropagator.cpp.

◆ generate_CallQmlContextPropertyLookup()

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

Definition at line 1585 of file qqmljstypepropagator.cpp.

◆ generate_CallValue()

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

Definition at line 760 of file qqmljstypepropagator.cpp.

◆ generate_CallWithReceiver()

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

Definition at line 769 of file qqmljstypepropagator.cpp.

◆ generate_CallWithSpread()

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

Definition at line 1592 of file qqmljstypepropagator.cpp.

◆ generate_CheckException()

void QQmlJSTypePropagator::generate_CheckException ( )
override

Definition at line 2023 of file qqmljstypepropagator.cpp.

◆ generate_CloneBlockContext()

void QQmlJSTypePropagator::generate_CloneBlockContext ( )
override

Definition at line 1799 of file qqmljstypepropagator.cpp.

◆ generate_CmpEq()

void QQmlJSTypePropagator::generate_CmpEq ( int lhs)
override

Definition at line 2154 of file qqmljstypepropagator.cpp.

◆ generate_CmpEqInt()

void QQmlJSTypePropagator::generate_CmpEqInt ( int lhsConst)
override

Definition at line 2136 of file qqmljstypepropagator.cpp.

◆ generate_CmpEqNull()

void QQmlJSTypePropagator::generate_CmpEqNull ( )
override

Definition at line 2124 of file qqmljstypepropagator.cpp.

◆ generate_CmpGe()

void QQmlJSTypePropagator::generate_CmpGe ( int lhs)
override

Definition at line 2174 of file qqmljstypepropagator.cpp.

◆ generate_CmpGt()

void QQmlJSTypePropagator::generate_CmpGt ( int lhs)
override

Definition at line 2168 of file qqmljstypepropagator.cpp.

◆ generate_CmpIn()

void QQmlJSTypePropagator::generate_CmpIn ( int lhs)
override

Definition at line 2204 of file qqmljstypepropagator.cpp.

◆ generate_CmpInstanceOf()

void QQmlJSTypePropagator::generate_CmpInstanceOf ( int lhs)
override

Definition at line 2216 of file qqmljstypepropagator.cpp.

◆ generate_CmpLe()

void QQmlJSTypePropagator::generate_CmpLe ( int lhs)
override

Definition at line 2186 of file qqmljstypepropagator.cpp.

◆ generate_CmpLt()

void QQmlJSTypePropagator::generate_CmpLt ( int lhs)
override

Definition at line 2180 of file qqmljstypepropagator.cpp.

◆ generate_CmpNe()

void QQmlJSTypePropagator::generate_CmpNe ( int lhs)
override

Definition at line 2161 of file qqmljstypepropagator.cpp.

◆ generate_CmpNeInt()

void QQmlJSTypePropagator::generate_CmpNeInt ( int lhs)
override

Definition at line 2145 of file qqmljstypepropagator.cpp.

◆ generate_CmpNeNull()

void QQmlJSTypePropagator::generate_CmpNeNull ( )
override

Definition at line 2130 of file qqmljstypepropagator.cpp.

◆ generate_CmpStrictEqual()

void QQmlJSTypePropagator::generate_CmpStrictEqual ( int lhs)
override

Definition at line 2192 of file qqmljstypepropagator.cpp.

◆ generate_CmpStrictNotEqual()

void QQmlJSTypePropagator::generate_CmpStrictNotEqual ( int lhs)
override

Definition at line 2198 of file qqmljstypepropagator.cpp.

◆ generate_Construct()

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

Definition at line 1651 of file qqmljstypepropagator.cpp.

◆ generate_Construct_SCArray()

void QQmlJSTypePropagator::generate_Construct_SCArray ( const QQmlJSMetaMethod & ctor,
int argc,
int argv )
protected

Definition at line 1637 of file qqmljstypepropagator.cpp.

◆ generate_Construct_SCDate()

void QQmlJSTypePropagator::generate_Construct_SCDate ( const QQmlJSMetaMethod & ctor,
int argc,
int argv )
protected

Definition at line 1612 of file qqmljstypepropagator.cpp.

◆ generate_ConstructWithSpread()

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

Definition at line 1704 of file qqmljstypepropagator.cpp.

◆ generate_ConvertThisToObject()

void QQmlJSTypePropagator::generate_ConvertThisToObject ( )
override

Definition at line 1965 of file qqmljstypepropagator.cpp.

◆ generate_CreateCallContext()

void QQmlJSTypePropagator::generate_CreateCallContext ( )
override

Definition at line 1773 of file qqmljstypepropagator.cpp.

◆ generate_CreateClass()

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

Definition at line 1941 of file qqmljstypepropagator.cpp.

◆ generate_CreateMappedArgumentsObject()

void QQmlJSTypePropagator::generate_CreateMappedArgumentsObject ( )
override

Definition at line 1949 of file qqmljstypepropagator.cpp.

◆ generate_CreateRestParameter()

void QQmlJSTypePropagator::generate_CreateRestParameter ( int argIndex)
override

Definition at line 1959 of file qqmljstypepropagator.cpp.

◆ generate_CreateUnmappedArgumentsObject()

void QQmlJSTypePropagator::generate_CreateUnmappedArgumentsObject ( )
override

Definition at line 1954 of file qqmljstypepropagator.cpp.

◆ generate_DeadTemporalZoneCheck()

void QQmlJSTypePropagator::generate_DeadTemporalZoneCheck ( int name)
override

Definition at line 1734 of file qqmljstypepropagator.cpp.

◆ generate_Debug()

void QQmlJSTypePropagator::generate_Debug ( )
override

Definition at line 105 of file qqmljstypepropagator.cpp.

◆ generate_DeclareVar()

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

Definition at line 1899 of file qqmljstypepropagator.cpp.

◆ generate_Decrement()

void QQmlJSTypePropagator::generate_Decrement ( )
override

Definition at line 2312 of file qqmljstypepropagator.cpp.

◆ generate_DefineArray()

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

Definition at line 1906 of file qqmljstypepropagator.cpp.

◆ generate_DefineObjectLiteral()

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

Definition at line 1916 of file qqmljstypepropagator.cpp.

◆ generate_DeleteName()

void QQmlJSTypePropagator::generate_DeleteName ( int name)
override

Definition at line 1882 of file qqmljstypepropagator.cpp.

◆ generate_DeleteProperty()

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

Definition at line 1875 of file qqmljstypepropagator.cpp.

◆ generate_DestructureRestElement()

void QQmlJSTypePropagator::generate_DestructureRestElement ( )
override

Definition at line 1870 of file qqmljstypepropagator.cpp.

◆ generate_Div()

void QQmlJSTypePropagator::generate_Div ( int lhs)
override

Definition at line 2420 of file qqmljstypepropagator.cpp.

◆ generate_Exp()

void QQmlJSTypePropagator::generate_Exp ( int lhs)
override

Definition at line 2410 of file qqmljstypepropagator.cpp.

◆ generate_GetException()

void QQmlJSTypePropagator::generate_GetException ( )
override

Definition at line 1762 of file qqmljstypepropagator.cpp.

◆ generate_GetIterator()

void QQmlJSTypePropagator::generate_GetIterator ( int iterator)
override

Definition at line 1823 of file qqmljstypepropagator.cpp.

◆ generate_GetLookup()

void QQmlJSTypePropagator::generate_GetLookup ( int index)
override

Definition at line 665 of file qqmljstypepropagator.cpp.

◆ generate_GetOptionalLookup()

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

Definition at line 670 of file qqmljstypepropagator.cpp.

◆ generate_GetTemplateObject()

void QQmlJSTypePropagator::generate_GetTemplateObject ( int index)
override

Definition at line 2447 of file qqmljstypepropagator.cpp.

◆ generate_Increment()

void QQmlJSTypePropagator::generate_Increment ( )
override

Definition at line 2307 of file qqmljstypepropagator.cpp.

◆ generate_InitializeBlockDeadTemporalZone()

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

Definition at line 2435 of file qqmljstypepropagator.cpp.

◆ generate_IteratorClose()

void QQmlJSTypePropagator::generate_IteratorClose ( )
override

Definition at line 1865 of file qqmljstypepropagator.cpp.

◆ generate_IteratorNext()

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

Definition at line 1846 of file qqmljstypepropagator.cpp.

◆ generate_IteratorNextForYieldStar()

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

Definition at line 1857 of file qqmljstypepropagator.cpp.

◆ generate_Jump()

void QQmlJSTypePropagator::generate_Jump ( int offset)
override

Definition at line 1980 of file qqmljstypepropagator.cpp.

◆ generate_JumpFalse()

void QQmlJSTypePropagator::generate_JumpFalse ( int offset)
override

Definition at line 1999 of file qqmljstypepropagator.cpp.

◆ generate_JumpNoException()

void QQmlJSTypePropagator::generate_JumpNoException ( int offset)
override

Definition at line 2011 of file qqmljstypepropagator.cpp.

◆ generate_JumpNotUndefined()

void QQmlJSTypePropagator::generate_JumpNotUndefined ( int offset)
override

Definition at line 2017 of file qqmljstypepropagator.cpp.

◆ generate_JumpTrue()

void QQmlJSTypePropagator::generate_JumpTrue ( int offset)
override

Definition at line 1987 of file qqmljstypepropagator.cpp.

◆ generate_LoadClosure()

void QQmlJSTypePropagator::generate_LoadClosure ( int value)
override

Definition at line 233 of file qqmljstypepropagator.cpp.

◆ generate_LoadConst()

void QQmlJSTypePropagator::generate_LoadConst ( int index)
override

Definition at line 110 of file qqmljstypepropagator.cpp.

◆ generate_LoadElement()

void QQmlJSTypePropagator::generate_LoadElement ( int base)
override

Definition at line 439 of file qqmljstypepropagator.cpp.

◆ generate_LoadFalse()

void QQmlJSTypePropagator::generate_LoadFalse ( )
override

Definition at line 126 of file qqmljstypepropagator.cpp.

◆ generate_LoadGlobalLookup()

void QQmlJSTypePropagator::generate_LoadGlobalLookup ( int index)
override

Definition at line 251 of file qqmljstypepropagator.cpp.

◆ generate_LoadImport()

void QQmlJSTypePropagator::generate_LoadImport ( int index)
override

Definition at line 179 of file qqmljstypepropagator.cpp.

◆ generate_LoadInt()

void QQmlJSTypePropagator::generate_LoadInt ( int value)
override

Definition at line 141 of file qqmljstypepropagator.cpp.

◆ generate_LoadLocal()

void QQmlJSTypePropagator::generate_LoadLocal ( int index)
override

Definition at line 185 of file qqmljstypepropagator.cpp.

◆ generate_LoadName()

void QQmlJSTypePropagator::generate_LoadName ( int nameIndex)
override

Definition at line 241 of file qqmljstypepropagator.cpp.

◆ generate_LoadNull()

void QQmlJSTypePropagator::generate_LoadNull ( )
override

Definition at line 131 of file qqmljstypepropagator.cpp.

◆ generate_LoadOptionalProperty()

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

Definition at line 658 of file qqmljstypepropagator.cpp.

◆ generate_LoadProperty()

void QQmlJSTypePropagator::generate_LoadProperty ( int nameIndex)
override

Definition at line 653 of file qqmljstypepropagator.cpp.

◆ generate_LoadQmlContextPropertyLookup()

void QQmlJSTypePropagator::generate_LoadQmlContextPropertyLookup ( int index)
override

Definition at line 309 of file qqmljstypepropagator.cpp.

◆ generate_LoadReg()

void QQmlJSTypePropagator::generate_LoadReg ( int reg)
override

Definition at line 152 of file qqmljstypepropagator.cpp.

◆ generate_LoadRuntimeString()

void QQmlJSTypePropagator::generate_LoadRuntimeString ( int stringId)
override

Definition at line 221 of file qqmljstypepropagator.cpp.

◆ generate_LoadScopedLocal()

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

Definition at line 207 of file qqmljstypepropagator.cpp.

◆ generate_LoadSuperConstructor()

void QQmlJSTypePropagator::generate_LoadSuperConstructor ( )
override

Definition at line 1970 of file qqmljstypepropagator.cpp.

◆ generate_LoadSuperProperty()

void QQmlJSTypePropagator::generate_LoadSuperProperty ( int property)
override

Definition at line 733 of file qqmljstypepropagator.cpp.

◆ generate_LoadTrue()

void QQmlJSTypePropagator::generate_LoadTrue ( )
override

Definition at line 121 of file qqmljstypepropagator.cpp.

◆ generate_LoadUndefined()

void QQmlJSTypePropagator::generate_LoadUndefined ( )
override

Definition at line 136 of file qqmljstypepropagator.cpp.

◆ generate_LoadZero()

void QQmlJSTypePropagator::generate_LoadZero ( )
override

Definition at line 116 of file qqmljstypepropagator.cpp.

◆ generate_Mod()

void QQmlJSTypePropagator::generate_Mod ( int lhs)
override

Definition at line 2425 of file qqmljstypepropagator.cpp.

◆ generate_MoveConst()

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

Definition at line 146 of file qqmljstypepropagator.cpp.

◆ generate_MoveReg()

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

Definition at line 169 of file qqmljstypepropagator.cpp.

◆ generate_MoveRegExp()

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

Definition at line 227 of file qqmljstypepropagator.cpp.

◆ generate_Mul()

void QQmlJSTypePropagator::generate_Mul ( int lhs)
override

Definition at line 2415 of file qqmljstypepropagator.cpp.

◆ generate_PopContext()

void QQmlJSTypePropagator::generate_PopContext ( )
override

Definition at line 1818 of file qqmljstypepropagator.cpp.

◆ generate_PopScriptContext()

void QQmlJSTypePropagator::generate_PopScriptContext ( )
override

Definition at line 1812 of file qqmljstypepropagator.cpp.

◆ generate_PushBlockContext()

void QQmlJSTypePropagator::generate_PushBlockContext ( int index)
override

Definition at line 1792 of file qqmljstypepropagator.cpp.

◆ generate_PushCatchContext()

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

Definition at line 1778 of file qqmljstypepropagator.cpp.

◆ generate_PushScriptContext()

void QQmlJSTypePropagator::generate_PushScriptContext ( int index)
override

Definition at line 1805 of file qqmljstypepropagator.cpp.

◆ generate_PushWithContext()

void QQmlJSTypePropagator::generate_PushWithContext ( )
override

Definition at line 1786 of file qqmljstypepropagator.cpp.

◆ generate_Resume()

void QQmlJSTypePropagator::generate_Resume ( int )
override

Definition at line 755 of file qqmljstypepropagator.cpp.

◆ generate_Ret()

void QQmlJSTypePropagator::generate_Ret ( )
override

Definition at line 76 of file qqmljstypepropagator.cpp.

◆ generate_SetException()

void QQmlJSTypePropagator::generate_SetException ( )
override

Definition at line 1767 of file qqmljstypepropagator.cpp.

◆ generate_SetLookup()

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

Definition at line 728 of file qqmljstypepropagator.cpp.

◆ generate_SetUnwindHandler()

void QQmlJSTypePropagator::generate_SetUnwindHandler ( int offset)
override

Definition at line 1713 of file qqmljstypepropagator.cpp.

◆ generate_Shl()

void QQmlJSTypePropagator::generate_Shl ( int lhs)
override

Definition at line 2369 of file qqmljstypepropagator.cpp.

◆ generate_ShlConst()

void QQmlJSTypePropagator::generate_ShlConst ( int rhs)
override

Definition at line 2404 of file qqmljstypepropagator.cpp.

◆ generate_Shr()

void QQmlJSTypePropagator::generate_Shr ( int lhs)
override

Definition at line 2364 of file qqmljstypepropagator.cpp.

◆ generate_ShrConst()

void QQmlJSTypePropagator::generate_ShrConst ( int rhs)
override

Definition at line 2398 of file qqmljstypepropagator.cpp.

◆ generate_StoreElement()

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

Definition at line 491 of file qqmljstypepropagator.cpp.

◆ generate_StoreLocal()

void QQmlJSTypePropagator::generate_StoreLocal ( int index)
override

Definition at line 201 of file qqmljstypepropagator.cpp.

◆ generate_StoreNameCommon()

void QQmlJSTypePropagator::generate_StoreNameCommon ( int nameIndex)
protectedvirtual

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

Reimplemented in QQmlJSLinterTypePropagator.

Definition at line 365 of file qqmljstypepropagator.cpp.

◆ generate_StoreNameSloppy()

void QQmlJSTypePropagator::generate_StoreNameSloppy ( int nameIndex)
override

Definition at line 414 of file qqmljstypepropagator.cpp.

◆ generate_StoreNameStrict()

void QQmlJSTypePropagator::generate_StoreNameStrict ( int name)
override

Definition at line 419 of file qqmljstypepropagator.cpp.

◆ generate_StoreProperty()

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

Definition at line 677 of file qqmljstypepropagator.cpp.

◆ generate_StoreReg()

void QQmlJSTypePropagator::generate_StoreReg ( int reg)
override

Definition at line 161 of file qqmljstypepropagator.cpp.

◆ generate_StoreScopedLocal()

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

Definition at line 214 of file qqmljstypepropagator.cpp.

◆ generate_StoreSuperProperty()

void QQmlJSTypePropagator::generate_StoreSuperProperty ( int property)
override

Definition at line 739 of file qqmljstypepropagator.cpp.

◆ generate_Sub()

void QQmlJSTypePropagator::generate_Sub ( int lhs)
override

Definition at line 2430 of file qqmljstypepropagator.cpp.

◆ generate_TailCall()

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

Definition at line 1602 of file qqmljstypepropagator.cpp.

◆ generate_ThrowException()

void QQmlJSTypePropagator::generate_ThrowException ( )
override

Definition at line 1755 of file qqmljstypepropagator.cpp.

◆ generate_ThrowOnNullOrUndefined()

void QQmlJSTypePropagator::generate_ThrowOnNullOrUndefined ( )
override

Definition at line 2442 of file qqmljstypepropagator.cpp.

◆ generate_ToObject()

void QQmlJSTypePropagator::generate_ToObject ( )
override

Definition at line 1975 of file qqmljstypepropagator.cpp.

◆ generate_TypeofName()

void QQmlJSTypePropagator::generate_TypeofName ( int name)
override

Definition at line 1888 of file qqmljstypepropagator.cpp.

◆ generate_TypeofValue()

void QQmlJSTypePropagator::generate_TypeofValue ( )
override

Definition at line 1894 of file qqmljstypepropagator.cpp.

◆ generate_UCompl()

void QQmlJSTypePropagator::generate_UCompl ( )
override

Definition at line 2302 of file qqmljstypepropagator.cpp.

◆ generate_UMinus()

void QQmlJSTypePropagator::generate_UMinus ( )
override

Definition at line 2297 of file qqmljstypepropagator.cpp.

◆ generate_UNot()

void QQmlJSTypePropagator::generate_UNot ( )
override

Definition at line 2287 of file qqmljstypepropagator.cpp.

◆ generate_UnwindDispatch()

void QQmlJSTypePropagator::generate_UnwindDispatch ( )
override

Definition at line 1720 of file qqmljstypepropagator.cpp.

◆ generate_UnwindToLabel()

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

Definition at line 1726 of file qqmljstypepropagator.cpp.

◆ generate_UPlus()

void QQmlJSTypePropagator::generate_UPlus ( )
override

Definition at line 2292 of file qqmljstypepropagator.cpp.

◆ generate_UShr()

void QQmlJSTypePropagator::generate_UShr ( int lhs)
override

Definition at line 2359 of file qqmljstypepropagator.cpp.

◆ generate_UShrConst()

void QQmlJSTypePropagator::generate_UShrConst ( int rhsConst)
override

Definition at line 2392 of file qqmljstypepropagator.cpp.

◆ generate_Yield()

void QQmlJSTypePropagator::generate_Yield ( )
override

Definition at line 745 of file qqmljstypepropagator.cpp.

◆ generate_YieldStar()

void QQmlJSTypePropagator::generate_YieldStar ( )
override

Definition at line 750 of file qqmljstypepropagator.cpp.

◆ generateBinaryArithmeticOperation()

void QQmlJSTypePropagator::generateBinaryArithmeticOperation ( QSOperator::Op op,
int lhs )
protected

Definition at line 2317 of file qqmljstypepropagator.cpp.

◆ generateBinaryConstArithmeticOperation()

void QQmlJSTypePropagator::generateBinaryConstArithmeticOperation ( QSOperator::Op op)
protected

Definition at line 2328 of file qqmljstypepropagator.cpp.

◆ generateUnaryArithmeticOperation()

void QQmlJSTypePropagator::generateUnaryArithmeticOperation ( QQmlJSTypeResolver::UnaryOperator op)
protected

Definition at line 2278 of file qqmljstypepropagator.cpp.

◆ handleImportNamespaceLookup()

bool QQmlJSTypePropagator::handleImportNamespaceLookup ( const QString & propertyName)
protectedvirtual

Reimplemented in QQmlJSLinterTypePropagator.

Definition at line 528 of file qqmljstypepropagator.cpp.

◆ handleLookupError()

void QQmlJSTypePropagator::handleLookupError ( const QString & propertyName)
protectedvirtual

Reimplemented in QQmlJSLinterTypePropagator.

Definition at line 552 of file qqmljstypepropagator.cpp.

◆ handleUnqualifiedAccess()

void QQmlJSTypePropagator::handleUnqualifiedAccess ( const QString & name,
bool isMethod ) const
protectedvirtual

Reimplemented in QQmlJSLinterTypePropagator.

Definition at line 256 of file qqmljstypepropagator.cpp.

◆ handleUnqualifiedAccessAndContextProperties()

void QQmlJSTypePropagator::handleUnqualifiedAccessAndContextProperties ( const QString & name,
bool isMethod ) const
protectedvirtual

Reimplemented in QQmlJSLinterTypePropagator.

Definition at line 262 of file qqmljstypepropagator.cpp.

◆ isCallingProperty()

bool QQmlJSTypePropagator::isCallingProperty ( QQmlJSScope::ConstPtr scope,
const QString & name ) const
protectedvirtual

Reimplemented in QQmlJSLinterTypePropagator.

Definition at line 303 of file qqmljstypepropagator.cpp.

◆ isLoggingMethod()

bool QQmlJSTypePropagator::isLoggingMethod ( const QString & consoleMethod)
staticprotected

Definition at line 779 of file qqmljstypepropagator.cpp.

◆ isNoop()

bool QQmlJSTypePropagator::isNoop ( QV4::Moth::Instr::Type instr) const
protected

Definition at line 2651 of file qqmljstypepropagator.cpp.

◆ mergeRegister()

void QQmlJSTypePropagator::mergeRegister ( int index,
const VirtualRegister & a,
const VirtualRegister & b )
protected

Merges the types of two variations of the register at \index When the code branches and merges, the same register can carry one of multiple types. For example:

let a if (something) a = 12 else a = "stringstring" console.log(a)

At the point where we log the value we need a type that can hold both, the number and the string because we don't know which branch was taken before. mergeRegister chooses a type that can hold both variants.

Since the type propagator can run multiple passes over the same code (for loops with back jumps), we need to reproduce previous resolutions of the merge where they still fit. To that effect, we check m_prevStateAnnotations here.

Definition at line 1073 of file qqmljstypepropagator.cpp.

◆ populatesAccumulator()

bool QQmlJSTypePropagator::populatesAccumulator ( QV4::Moth::Instr::Type instr) const
protected

Definition at line 2509 of file qqmljstypepropagator.cpp.

◆ propagateArrayMethod()

bool QQmlJSTypePropagator::propagateArrayMethod ( const QString & name,
int argc,
int argv,
QQmlJSRegisterContent valueType )
protected

Definition at line 1362 of file qqmljstypepropagator.cpp.

◆ propagateBinaryOperation()

QQmlJSRegisterContent QQmlJSTypePropagator::propagateBinaryOperation ( QSOperator::Op op,
int lhs )
protected

Definition at line 2703 of file qqmljstypepropagator.cpp.

◆ propagateCall()

void QQmlJSTypePropagator::propagateCall ( const QList< QQmlJSMetaMethod > & methods,
int argc,
int argv,
QQmlJSRegisterContent scope )
protectedvirtual

Reimplemented in QQmlJSLinterTypePropagator.

Definition at line 1162 of file qqmljstypepropagator.cpp.

◆ propagatePropertyLookup()

void QQmlJSTypePropagator::propagatePropertyLookup ( const QString & name,
int lookupIndex = QQmlJSRegisterContent::InvalidLookupIndex )
protectedvirtual

Reimplemented in QQmlJSLinterTypePropagator.

Definition at line 564 of file qqmljstypepropagator.cpp.

◆ propagateScopeLookupCall()

void QQmlJSTypePropagator::propagateScopeLookupCall ( const QString & functionName,
int argc,
int argv )
protected

Definition at line 1551 of file qqmljstypepropagator.cpp.

◆ propagateStringArgCall()

void QQmlJSTypePropagator::propagateStringArgCall ( QQmlJSRegisterContent base,
int argv )
protected

Definition at line 1327 of file qqmljstypepropagator.cpp.

◆ propagateTranslationMethod()

bool QQmlJSTypePropagator::propagateTranslationMethod ( const QList< QQmlJSMetaMethod > & methods,
int argc,
int argv )
protected

Definition at line 1216 of file qqmljstypepropagator.cpp.

◆ propagateTranslationMethod_SAcheck()

void QQmlJSTypePropagator::propagateTranslationMethod_SAcheck ( const QString & methodName)
protectedvirtual

Reimplemented in QQmlJSLinterTypePropagator.

Definition at line 1211 of file qqmljstypepropagator.cpp.

◆ propertyResolution()

QQmlJSTypePropagator::PropertyResolution QQmlJSTypePropagator::propertyResolution ( QQmlJSScope::ConstPtr scope,
const QString & type ) const
protected

Definition at line 278 of file qqmljstypepropagator.cpp.

◆ QQmlJSCompilePass()

QQmlJSCompilePass::QQmlJSCompilePass ( const QV4::Compiler::JSUnitGenerator * jsUnitGenerator,
const QQmlJSTypeResolver * typeResolver,
QQmlJSLogger * logger,
const BasicBlocks & basicBlocks = {},
const InstructionAnnotations & annotations = {} )
inline

Definition at line 321 of file qqmljscompilepass_p.h.

◆ recordCompareType()

void QQmlJSTypePropagator::recordCompareType ( int lhs)
protected

Definition at line 2094 of file qqmljstypepropagator.cpp.

◆ recordEqualsIntType()

void QQmlJSTypePropagator::recordEqualsIntType ( )
protected

Definition at line 2038 of file qqmljstypepropagator.cpp.

◆ recordEqualsNullType()

void QQmlJSTypePropagator::recordEqualsNullType ( )
protected

Definition at line 2028 of file qqmljstypepropagator.cpp.

◆ recordEqualsType()

void QQmlJSTypePropagator::recordEqualsType ( int lhs)
protected

Definition at line 2049 of file qqmljstypepropagator.cpp.

◆ registerName()

QString QQmlJSTypePropagator::registerName ( int registerIndex) const
protected

Definition at line 2768 of file qqmljstypepropagator.cpp.

◆ run()

QQmlJSCompilePass::BlocksAndAnnotations QQmlJSTypePropagator::run ( const Function * m_function)

Definition at line 29 of file qqmljstypepropagator.cpp.

◆ saveRegisterStateForJump()

void QQmlJSTypePropagator::saveRegisterStateForJump ( int offset)
protected

Definition at line 2726 of file qqmljstypepropagator.cpp.

◆ setAccumulator()

void QQmlJSTypePropagator::setAccumulator ( QQmlJSRegisterContent content)
protected

Definition at line 1033 of file qqmljstypepropagator.cpp.

◆ setRegister()

void QQmlJSTypePropagator::setRegister ( int index,
QQmlJSRegisterContent content )
protected

Definition at line 1038 of file qqmljstypepropagator.cpp.

◆ setVarAccumulatorAndError()

void QQmlJSTypePropagator::setVarAccumulatorAndError ( )
inlineprotected

Definition at line 279 of file qqmljstypepropagator_p.h.

◆ startInstruction()

QV4::Moth::ByteCodeHandler::Verdict QQmlJSTypePropagator::startInstruction ( QV4::Moth::Instr::Type instr)
overridevirtual

Implements QV4::Moth::ByteCodeHandler.

Definition at line 2454 of file qqmljstypepropagator.cpp.

◆ warnAboutTypeCoercion()

void QQmlJSTypePropagator::warnAboutTypeCoercion ( int lhs)
protectedvirtual

Reimplemented in QQmlJSLinterTypePropagator.

Definition at line 2119 of file qqmljstypepropagator.cpp.

Member Data Documentation

◆ m_jumpOriginRegisterStateByTargetInstructionOffset

QMultiHash<int, ExpectedRegisterState> QQmlJSTypePropagator::m_jumpOriginRegisterStateByTargetInstructionOffset
protected

Definition at line 288 of file qqmljstypepropagator_p.h.

◆ m_prevStateAnnotations

InstructionAnnotations QQmlJSTypePropagator::m_prevStateAnnotations
protected

Definition at line 290 of file qqmljstypepropagator_p.h.

◆ m_returnType

QQmlJSRegisterContent QQmlJSTypePropagator::m_returnType
protected

Definition at line 285 of file qqmljstypepropagator_p.h.

◆ m_state

PassState QQmlJSTypePropagator::m_state
protected

Definition at line 291 of file qqmljstypepropagator_p.h.


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