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

#include <qqmljsbasicblocks_p.h>

+ Inheritance diagram for QQmlJSBasicBlocks:
+ Collaboration diagram for QQmlJSBasicBlocks:

Classes

struct  BasicBlocksValidationResult
 

Public Member Functions

 QQmlJSBasicBlocks (const QV4::Compiler::Context *context, const QV4::Compiler::JSUnitGenerator *unitGenerator, const QQmlJSTypeResolver *typeResolver, QQmlJSLogger *logger)
 
 ~QQmlJSBasicBlocks ()=default
 
QQmlJSCompilePass::BlocksAndAnnotations run (const Function *function, QQmlJSAotCompiler::Flags compileFlags, bool &basicBlocksValidationFailed)
 
BasicBlocksValidationResult basicBlocksValidation ()
 
QList< ObjectOrArrayDefinitionobjectAndArrayDefinitions () const
 
- 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
 

Static Public Member Functions

static BasicBlocks::iterator basicBlockForInstruction (QFlatMap< int, BasicBlock > &container, int instructionOffset)
 
static BasicBlocks::const_iterator basicBlockForInstruction (const QFlatMap< int, BasicBlock > &container, int instructionOffset)
 

Private Member Functions

QV4::Moth::ByteCodeHandler::Verdict startInstruction (QV4::Moth::Instr::Type type) override
 
void endInstruction (QV4::Moth::Instr::Type type) 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_IteratorNext (int value, int offset) override
 
void generate_GetOptionalLookup (int index, int offset) override
 
void generate_Ret () override
 
void generate_ThrowException () override
 
void generate_DefineArray (int argc, int argv) override
 
void generate_DefineObjectLiteral (int internalClassId, int argc, int args) override
 
void generate_Construct (int func, int argc, int argv) override
 

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

Definition at line 24 of file qqmljsbasicblocks_p.h.

Constructor & Destructor Documentation

◆ QQmlJSBasicBlocks()

QQmlJSBasicBlocks::QQmlJSBasicBlocks ( const QV4::Compiler::Context * context,
const QV4::Compiler::JSUnitGenerator * unitGenerator,
const QQmlJSTypeResolver * typeResolver,
QQmlJSLogger * logger )
inline

Definition at line 27 of file qqmljsbasicblocks_p.h.

◆ ~QQmlJSBasicBlocks()

QQmlJSBasicBlocks::~QQmlJSBasicBlocks ( )
default

Member Function Documentation

◆ basicBlockForInstruction() [1/2]

static BasicBlocks::const_iterator QQmlJSBasicBlocks::basicBlockForInstruction ( const QFlatMap< int, BasicBlock > & container,
int instructionOffset )
static

◆ basicBlockForInstruction() [2/2]

QQmlJSCompilePass::BasicBlocks::iterator QQmlJSBasicBlocks::basicBlockForInstruction ( QFlatMap< int, BasicBlock > & container,
int instructionOffset )
static

Definition at line 291 of file qqmljsbasicblocks.cpp.

Referenced by basicBlocksValidation(), generate_Ret(), and generate_ThrowException().

+ Here is the caller graph for this function:

◆ basicBlocksValidation()

QQmlJSBasicBlocks::BasicBlocksValidationResult QQmlJSBasicBlocks::basicBlocksValidation ( )

Definition at line 306 of file qqmljsbasicblocks.cpp.

References basicBlockForInstruction(), QSet< T >::cbegin(), QSet< T >::cend(), QFlatMap< Key, T, Compare, KeyContainer, MappedContainer >::empty(), QFlatMap< Key, T, Compare, KeyContainer, MappedContainer >::insert(), it, and QQmlJSCompilePass::m_basicBlocks.

Referenced by run().

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

◆ endInstruction()

void QQmlJSBasicBlocks::endInstruction ( QV4::Moth::Instr::Type type)
overrideprivatevirtual

◆ generate_Construct()

void QQmlJSBasicBlocks::generate_Construct ( int func,
int argc,
int argv )
overrideprivate

Definition at line 259 of file qqmljsbasicblocks.cpp.

References QList< T >::append(), QV4::Moth::ByteCodeHandler::currentInstructionOffset(), and Q_UNUSED.

+ Here is the call graph for this function:

◆ generate_DefineArray()

void QQmlJSBasicBlocks::generate_DefineArray ( int argc,
int argv )
overrideprivate

Definition at line 241 of file qqmljsbasicblocks.cpp.

References QList< T >::append(), and QV4::Moth::ByteCodeHandler::currentInstructionOffset().

+ Here is the call graph for this function:

◆ generate_DefineObjectLiteral()

void QQmlJSBasicBlocks::generate_DefineObjectLiteral ( int internalClassId,
int argc,
int args )
overrideprivate

Definition at line 251 of file qqmljsbasicblocks.cpp.

References QList< T >::append(), and QV4::Moth::ByteCodeHandler::currentInstructionOffset().

+ Here is the call graph for this function:

◆ generate_GetOptionalLookup()

void QQmlJSBasicBlocks::generate_GetOptionalLookup ( int index,
int offset )
overrideprivate

Definition at line 221 of file qqmljsbasicblocks.cpp.

References Q_UNUSED.

◆ generate_IteratorNext()

void QQmlJSBasicBlocks::generate_IteratorNext ( int value,
int offset )
overrideprivate

Definition at line 215 of file qqmljsbasicblocks.cpp.

References Q_UNUSED.

◆ generate_Jump()

void QQmlJSBasicBlocks::generate_Jump ( int offset)
overrideprivate

Definition at line 190 of file qqmljsbasicblocks.cpp.

◆ generate_JumpFalse()

void QQmlJSBasicBlocks::generate_JumpFalse ( int offset)
overrideprivate

Definition at line 200 of file qqmljsbasicblocks.cpp.

◆ generate_JumpNoException()

void QQmlJSBasicBlocks::generate_JumpNoException ( int offset)
overrideprivate

Definition at line 205 of file qqmljsbasicblocks.cpp.

◆ generate_JumpNotUndefined()

void QQmlJSBasicBlocks::generate_JumpNotUndefined ( int offset)
overrideprivate

Definition at line 210 of file qqmljsbasicblocks.cpp.

◆ generate_JumpTrue()

void QQmlJSBasicBlocks::generate_JumpTrue ( int offset)
overrideprivate

Definition at line 195 of file qqmljsbasicblocks.cpp.

◆ generate_Ret()

void QQmlJSBasicBlocks::generate_Ret ( )
overrideprivate

Definition at line 227 of file qqmljsbasicblocks.cpp.

References basicBlockForInstruction(), QV4::Moth::ByteCodeHandler::currentInstructionOffset(), and QQmlJSCompilePass::m_basicBlocks.

+ Here is the call graph for this function:

◆ generate_ThrowException()

void QQmlJSBasicBlocks::generate_ThrowException ( )
overrideprivate

Definition at line 234 of file qqmljsbasicblocks.cpp.

References basicBlockForInstruction(), QV4::Moth::ByteCodeHandler::currentInstructionOffset(), and QQmlJSCompilePass::m_basicBlocks.

+ Here is the call graph for this function:

◆ objectAndArrayDefinitions()

QList< QQmlJSCompilePass::ObjectOrArrayDefinition > QQmlJSBasicBlocks::objectAndArrayDefinitions ( ) const

Definition at line 272 of file qqmljsoptimizations.cpp.

◆ run()

◆ startInstruction()


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