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
QQmlJSStorageGeneralizer Class Reference

#include <qqmljsstoragegeneralizer_p.h>

Inheritance diagram for QQmlJSStorageGeneralizer:
Collaboration diagram for QQmlJSStorageGeneralizer:

Public Member Functions

 QQmlJSStorageGeneralizer (const QV4::Compiler::JSUnitGenerator *jsUnitGenerator, const QQmlJSTypeResolver *typeResolver, QQmlJSLogger *logger, const BasicBlocks &basicBlocks, const InstructionAnnotations &annotations)
BlocksAndAnnotations run (Function *function)
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 Member Functions

Verdict startInstruction (QV4::Moth::Instr::Type) override
void endInstruction (QV4::Moth::Instr::Type) override
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

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>
Protected Types inherited from QV4::Moth::ByteCodeHandler
enum  Verdict { ProcessInstruction , SkipInstruction }
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
QQmlJSRegisterContentPoolm_pool = nullptr
QQmlJSLoggerm_logger = nullptr
const Functionm_function = nullptr
BasicBlocks m_basicBlocks
InstructionAnnotations m_annotations

Detailed Description

The QQmlJSStorageGeneralizer is a compile pass that changes all type annotations and the function signature to use a generic storage type like QVariant or QObject*. This is necessary if we cannot rely on the original type to be immediately accessible, for example because we cannot include its header.

QQmlJSStorageGeneralizer does not have to use the byte code at all but operates only on the annotations and the function description.

Definition at line 22 of file qqmljsstoragegeneralizer_p.h.

Constructor & Destructor Documentation

◆ QQmlJSStorageGeneralizer()

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

Definition at line 25 of file qqmljsstoragegeneralizer_p.h.

Member Function Documentation

◆ endInstruction()

void QQmlJSStorageGeneralizer::endInstruction ( QV4::Moth::Instr::Type )
inlineoverrideprotectedvirtual

Implements QV4::Moth::ByteCodeHandler.

Definition at line 37 of file qqmljsstoragegeneralizer_p.h.

◆ run()

QQmlJSCompilePass::BlocksAndAnnotations QQmlJSStorageGeneralizer::run ( Function * function)

Definition at line 23 of file qqmljsstoragegeneralizer.cpp.

◆ startInstruction()

Verdict QQmlJSStorageGeneralizer::startInstruction ( QV4::Moth::Instr::Type )
inlineoverrideprotectedvirtual

Implements QV4::Moth::ByteCodeHandler.

Definition at line 36 of file qqmljsstoragegeneralizer_p.h.


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