summaryrefslogtreecommitdiffstats
path: root/src/script
diff options
context:
space:
mode:
Diffstat (limited to 'src/script')
-rw-r--r--src/script/bridge/qscriptfunction.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/script/bridge/qscriptfunction.cpp b/src/script/bridge/qscriptfunction.cpp
index ac8ca83..2124128 100644
--- a/src/script/bridge/qscriptfunction.cpp
+++ b/src/script/bridge/qscriptfunction.cpp
@@ -44,9 +44,12 @@
#include "private/qscriptengine_p.h"
#include "qscriptcontext.h"
#include "private/qscriptcontext_p.h"
+#include "private/qscriptvalue_p.h"
#include "qscriptactivationobject_p.h"
#include "JSGlobalObject.h"
+#include "DebuggerCallFrame.h"
+#include "Debugger.h"
namespace JSC
@@ -77,6 +80,9 @@ FunctionWrapper::~FunctionWrapper()
JSC::ConstructType FunctionWrapper::getConstructData(JSC::ConstructData& consData)
{
consData.native.function = proxyConstruct;
+#ifdef QT_BUILD_SCRIPT_LIB
+ consData.native.function.doNotCallDebuggerFunctionExit();
+#endif
return JSC::ConstructTypeHost;
}
@@ -108,7 +114,12 @@ JSC::JSObject* FunctionWrapper::proxyConstruct(JSC::ExecState *exec, JSC::JSObje
QScriptPushScopeHelper scope(exec, true);
QScriptValue defaultObject = ctx->thisObject();
+
QScriptValue result = self->data->function(ctx, QScriptEnginePrivate::get(eng_p));
+#ifdef QT_BUILD_SCRIPT_LIB
+ if (JSC::Debugger* debugger = exec->lexicalGlobalObject()->debugger())
+ debugger->functionExit(QScriptValuePrivate::get(result)->jscValue, -1);
+#endif
if (!result.isObject())
result = defaultObject;