aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4function_p.h
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2013-09-11 19:05:24 +0200
committerSimon Hausmann <simon.hausmann@digia.com>2013-09-11 19:08:28 +0200
commit89402e0ef69da3c954a540510e8b4e8501bc1ce3 (patch)
treecf97d95e1ac837e5d439f2be9125e0a104b5bbce /src/qml/jsruntime/qv4function_p.h
parent0cce947449fa502fd4bf2aec95fa490c8417cdeb (diff)
parent262d7261033df7650938c38401112a4767d926ff (diff)
Merge branch 'dev' of qtdeclarative into wip/v4
Conflicts: src/qml/jsruntime/qv4script.cpp Change-Id: I20136cab29d86862b5bd9208003200bc24bcdacf
Diffstat (limited to 'src/qml/jsruntime/qv4function_p.h')
-rw-r--r--src/qml/jsruntime/qv4function_p.h13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/qml/jsruntime/qv4function_p.h b/src/qml/jsruntime/qv4function_p.h
index 735dc558e1..1fc40d7209 100644
--- a/src/qml/jsruntime/qv4function_p.h
+++ b/src/qml/jsruntime/qv4function_p.h
@@ -49,6 +49,7 @@
#include "qv4value_def_p.h"
#include <private/qv4compileddata_p.h>
+#include <private/qv4engine_p.h>
QT_BEGIN_NAMESPACE
@@ -84,7 +85,17 @@ struct Function {
const CompiledData::Function *compiledFunction;
CompiledData::CompilationUnit *compilationUnit;
- Value (*code)(ExecutionContext *, const uchar *);
+ inline Value code(ExecutionContext *ctx, const uchar *data) {
+ Value *stack = ctx->engine->jsStackTop;
+ try {
+ return codePtr(ctx, data);
+ } catch (...) {
+ ctx->engine->jsStackTop = stack;
+ throw;
+ }
+ }
+
+ Value (*codePtr)(ExecutionContext *, const uchar *);
const uchar *codeData;
quint32 codeSize;