summaryrefslogtreecommitdiff
path: root/src/qml/jsruntime/qv4function_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/qml/jsruntime/qv4function_p.h')
-rw-r--r--src/qml/jsruntime/qv4function_p.h19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/qml/jsruntime/qv4function_p.h b/src/qml/jsruntime/qv4function_p.h
index 2c5de203b6..8f2a38416d 100644
--- a/src/qml/jsruntime/qv4function_p.h
+++ b/src/qml/jsruntime/qv4function_p.h
@@ -81,9 +81,10 @@ struct Q_QML_EXPORT FunctionData {
Q_STATIC_ASSERT(std::is_standard_layout< FunctionData >::value);
struct Q_QML_EXPORT Function : public FunctionData {
-private:
+protected:
Function(ExecutionEngine *engine, ExecutableCompilationUnit *unit,
const CompiledData::Function *function, const QQmlPrivate::AOTCompiledFunction *aotFunction);
+ Function(ExecutionEngine *engine, const QQmlPrivate::AOTCompiledFunction *aotFunction);
~Function();
public:
@@ -122,8 +123,12 @@ public:
static Function *create(ExecutionEngine *engine, ExecutableCompilationUnit *unit,
const CompiledData::Function *function,
const QQmlPrivate::AOTCompiledFunction *aotFunction);
+ static Function *create(ExecutionEngine *engine,
+ const QQmlPrivate::AOTCompiledFunction *aotFunction);
void destroy();
+ bool isSyntheticAotFunction() const { return codeData == nullptr && aotFunction != nullptr; }
+
// used when dynamically assigning signal handlers (QQmlConnection)
void updateInternalClass(ExecutionEngine *engine, const QList<QByteArray> &parameters);
@@ -151,6 +156,18 @@ public:
}
};
+struct SyntheticAotFunction : public Function
+{
+ SyntheticAotFunction(ExecutionEngine *engine, QQmlPrivate::AOTCompiledFunction aotFunction)
+ : Function(engine, &m_aotFunction)
+ , m_aotFunction(std::move(aotFunction))
+ {
+ }
+
+private:
+ QQmlPrivate::AOTCompiledFunction m_aotFunction;
+};
+
}
QT_END_NAMESPACE