diff options
Diffstat (limited to 'src/qml/jit/qv4isel_masm_p.h')
-rw-r--r-- | src/qml/jit/qv4isel_masm_p.h | 121 |
1 files changed, 61 insertions, 60 deletions
diff --git a/src/qml/jit/qv4isel_masm_p.h b/src/qml/jit/qv4isel_masm_p.h index b6ddd3c1c9..012745c5f2 100644 --- a/src/qml/jit/qv4isel_masm_p.h +++ b/src/qml/jit/qv4isel_masm_p.h @@ -54,6 +54,7 @@ #include "private/qv4jsir_p.h" #include "private/qv4isel_p.h" #include "private/qv4isel_util_p.h" +#include "private/qv4util_p.h" #include "private/qv4value_p.h" #include "private/qv4lookup_p.h" @@ -79,61 +80,61 @@ public: InstructionSelection(QQmlEnginePrivate *qmlEngine, QV4::ExecutableAllocator *execAllocator, IR::Module *module, QV4::Compiler::JSUnitGenerator *jsGenerator, EvalISelFactory *iselFactory); ~InstructionSelection(); - virtual void run(int functionIndex); + void run(int functionIndex) override; protected: - virtual QQmlRefPointer<QV4::CompiledData::CompilationUnit> backendCompileStep(); - - virtual void callBuiltinInvalid(IR::Name *func, IR::ExprList *args, IR::Expr *result); - virtual void callBuiltinTypeofQmlContextProperty(IR::Expr *base, IR::Member::MemberKind kind, int propertyIndex, IR::Expr *result); - virtual void callBuiltinTypeofMember(IR::Expr *base, const QString &name, IR::Expr *result); - virtual void callBuiltinTypeofSubscript(IR::Expr *base, IR::Expr *index, IR::Expr *result); - virtual void callBuiltinTypeofName(const QString &name, IR::Expr *result); - virtual void callBuiltinTypeofValue(IR::Expr *value, IR::Expr *result); - virtual void callBuiltinDeleteMember(IR::Expr *base, const QString &name, IR::Expr *result); - virtual void callBuiltinDeleteSubscript(IR::Expr *base, IR::Expr *index, IR::Expr *result); - virtual void callBuiltinDeleteName(const QString &name, IR::Expr *result); - virtual void callBuiltinDeleteValue(IR::Expr *result); - virtual void callBuiltinThrow(IR::Expr *arg); - virtual void callBuiltinReThrow(); - virtual void callBuiltinUnwindException(IR::Expr *); - virtual void callBuiltinPushCatchScope(const QString &exceptionName); - virtual void callBuiltinForeachIteratorObject(IR::Expr *arg, IR::Expr *result); - virtual void callBuiltinForeachNextPropertyname(IR::Expr *arg, IR::Expr *result); - virtual void callBuiltinPushWithScope(IR::Expr *arg); - virtual void callBuiltinPopScope(); - virtual void callBuiltinDeclareVar(bool deletable, const QString &name); - virtual void callBuiltinDefineArray(IR::Expr *result, IR::ExprList *args); - virtual void callBuiltinDefineObjectLiteral(IR::Expr *result, int keyValuePairCount, IR::ExprList *keyValuePairs, IR::ExprList *arrayEntries, bool needSparseArray); - virtual void callBuiltinSetupArgumentObject(IR::Expr *result); - virtual void callBuiltinConvertThisToObject(); - virtual void callValue(IR::Expr *value, IR::ExprList *args, IR::Expr *result); - virtual void callQmlContextProperty(IR::Expr *base, IR::Member::MemberKind kind, int propertyIndex, IR::ExprList *args, IR::Expr *result); - virtual void callProperty(IR::Expr *base, const QString &name, IR::ExprList *args, IR::Expr *result); - virtual void callSubscript(IR::Expr *base, IR::Expr *index, IR::ExprList *args, IR::Expr *result); - virtual void convertType(IR::Expr *source, IR::Expr *target); - virtual void loadThisObject(IR::Expr *temp); - virtual void loadQmlContext(IR::Expr *target); - virtual void loadQmlImportedScripts(IR::Expr *target); - virtual void loadQmlSingleton(const QString &name, IR::Expr *target); - virtual void loadConst(IR::Const *sourceConst, IR::Expr *target); - virtual void loadString(const QString &str, IR::Expr *target); - virtual void loadRegexp(IR::RegExp *sourceRegexp, IR::Expr *target); - virtual void getActivationProperty(const IR::Name *name, IR::Expr *target); - virtual void setActivationProperty(IR::Expr *source, const QString &targetName); - virtual void initClosure(IR::Closure *closure, IR::Expr *target); - virtual void getProperty(IR::Expr *base, const QString &name, IR::Expr *target); - virtual void getQmlContextProperty(IR::Expr *source, IR::Member::MemberKind kind, int index, bool captureRequired, IR::Expr *target); - virtual void getQObjectProperty(IR::Expr *base, int propertyIndex, bool captureRequired, bool isSingleton, int attachedPropertiesId, IR::Expr *target); - virtual void setProperty(IR::Expr *source, IR::Expr *targetBase, const QString &targetName); - virtual void setQmlContextProperty(IR::Expr *source, IR::Expr *targetBase, IR::Member::MemberKind kind, int propertyIndex); - virtual void setQObjectProperty(IR::Expr *source, IR::Expr *targetBase, int propertyIndex); - virtual void getElement(IR::Expr *base, IR::Expr *index, IR::Expr *target); - virtual void setElement(IR::Expr *source, IR::Expr *targetBase, IR::Expr *targetIndex); - virtual void copyValue(IR::Expr *source, IR::Expr *target); - virtual void swapValues(IR::Expr *source, IR::Expr *target); - virtual void unop(IR::AluOp oper, IR::Expr *sourceTemp, IR::Expr *target); - virtual void binop(IR::AluOp oper, IR::Expr *leftSource, IR::Expr *rightSource, IR::Expr *target); + QQmlRefPointer<QV4::CompiledData::CompilationUnit> backendCompileStep() override; + + void callBuiltinInvalid(IR::Name *func, IR::ExprList *args, IR::Expr *result) override; + void callBuiltinTypeofQmlContextProperty(IR::Expr *base, IR::Member::MemberKind kind, int propertyIndex, IR::Expr *result) override; + void callBuiltinTypeofMember(IR::Expr *base, const QString &name, IR::Expr *result) override; + void callBuiltinTypeofSubscript(IR::Expr *base, IR::Expr *index, IR::Expr *result) override; + void callBuiltinTypeofName(const QString &name, IR::Expr *result) override; + void callBuiltinTypeofValue(IR::Expr *value, IR::Expr *result) override; + void callBuiltinDeleteMember(IR::Expr *base, const QString &name, IR::Expr *result) override; + void callBuiltinDeleteSubscript(IR::Expr *base, IR::Expr *index, IR::Expr *result) override; + void callBuiltinDeleteName(const QString &name, IR::Expr *result) override; + void callBuiltinDeleteValue(IR::Expr *result) override; + void callBuiltinThrow(IR::Expr *arg) override; + void callBuiltinReThrow() override; + void callBuiltinUnwindException(IR::Expr *) override; + void callBuiltinPushCatchScope(const QString &exceptionName) override; + void callBuiltinForeachIteratorObject(IR::Expr *arg, IR::Expr *result) override; + void callBuiltinForeachNextPropertyname(IR::Expr *arg, IR::Expr *result) override; + void callBuiltinPushWithScope(IR::Expr *arg) override; + void callBuiltinPopScope() override; + void callBuiltinDeclareVar(bool deletable, const QString &name) override; + void callBuiltinDefineArray(IR::Expr *result, IR::ExprList *args) override; + void callBuiltinDefineObjectLiteral(IR::Expr *result, int keyValuePairCount, IR::ExprList *keyValuePairs, IR::ExprList *arrayEntries, bool needSparseArray) override; + void callBuiltinSetupArgumentObject(IR::Expr *result) override; + void callBuiltinConvertThisToObject() override; + void callValue(IR::Expr *value, IR::ExprList *args, IR::Expr *result) override; + void callQmlContextProperty(IR::Expr *base, IR::Member::MemberKind kind, int propertyIndex, IR::ExprList *args, IR::Expr *result) override; + void callProperty(IR::Expr *base, const QString &name, IR::ExprList *args, IR::Expr *result) override; + void callSubscript(IR::Expr *base, IR::Expr *index, IR::ExprList *args, IR::Expr *result) override; + void convertType(IR::Expr *source, IR::Expr *target) override; + void loadThisObject(IR::Expr *temp) override; + void loadQmlContext(IR::Expr *target) override; + void loadQmlImportedScripts(IR::Expr *target) override; + void loadQmlSingleton(const QString &name, IR::Expr *target) override; + void loadConst(IR::Const *sourceConst, IR::Expr *target) override; + void loadString(const QString &str, IR::Expr *target) override; + void loadRegexp(IR::RegExp *sourceRegexp, IR::Expr *target) override; + void getActivationProperty(const IR::Name *name, IR::Expr *target) override; + void setActivationProperty(IR::Expr *source, const QString &targetName) override; + void initClosure(IR::Closure *closure, IR::Expr *target) override; + void getProperty(IR::Expr *base, const QString &name, IR::Expr *target) override; + void getQmlContextProperty(IR::Expr *source, IR::Member::MemberKind kind, int index, bool captureRequired, IR::Expr *target) override; + void getQObjectProperty(IR::Expr *base, int propertyIndex, bool captureRequired, bool isSingleton, int attachedPropertiesId, IR::Expr *target) override; + void setProperty(IR::Expr *source, IR::Expr *targetBase, const QString &targetName) override; + void setQmlContextProperty(IR::Expr *source, IR::Expr *targetBase, IR::Member::MemberKind kind, int propertyIndex) override; + void setQObjectProperty(IR::Expr *source, IR::Expr *targetBase, int propertyIndex) override; + void getElement(IR::Expr *base, IR::Expr *index, IR::Expr *target) override; + void setElement(IR::Expr *source, IR::Expr *targetBase, IR::Expr *targetIndex) override; + void copyValue(IR::Expr *source, IR::Expr *target) override; + void swapValues(IR::Expr *source, IR::Expr *target) override; + void unop(IR::AluOp oper, IR::Expr *sourceTemp, IR::Expr *target) override; + void binop(IR::AluOp oper, IR::Expr *leftSource, IR::Expr *rightSource, IR::Expr *target) override; typedef Assembler::Address Address; typedef Assembler::Pointer Pointer; @@ -158,13 +159,13 @@ protected: return _as->stackLayout().callDataAddress(); } - virtual void constructActivationProperty(IR::Name *func, IR::ExprList *args, IR::Expr *result); - virtual void constructProperty(IR::Expr *base, const QString &name, IR::ExprList *args, IR::Expr*result); - virtual void constructValue(IR::Expr *value, IR::ExprList *args, IR::Expr *result); + void constructActivationProperty(IR::Name *func, IR::ExprList *args, IR::Expr *result) override; + void constructProperty(IR::Expr *base, const QString &name, IR::ExprList *args, IR::Expr*result) override; + void constructValue(IR::Expr *value, IR::ExprList *args, IR::Expr *result) override; - virtual void visitJump(IR::Jump *); - virtual void visitCJump(IR::CJump *); - virtual void visitRet(IR::Ret *); + void visitJump(IR::Jump *) override; + void visitCJump(IR::CJump *) override; + void visitRet(IR::Ret *) override; bool visitCJumpDouble(IR::AluOp op, IR::Expr *left, IR::Expr *right, IR::BasicBlock *iftrue, IR::BasicBlock *iffalse); @@ -272,7 +273,7 @@ private: } IR::BasicBlock *_block; - QSet<IR::Jump *> _removableJumps; + BitVector _removableJumps; Assembler* _as; QScopedPointer<CompilationUnit> compilationUnit; |