aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4context.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2013-10-01 16:19:28 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-10-03 09:24:41 +0200
commit7d9780b6308e15dcd4adcb65d7b516666c285f54 (patch)
tree94c598d4aba187293dace67011dbcaf8347ef8b7 /src/qml/jsruntime/qv4context.cpp
parent8abf7f5876a48c0879bce628597533c7b6eca9a0 (diff)
Cleanup exception handling
The code in the Exception class operates entirely on the engine's data, so move it into ExecutionEngine instead. This eliminates the need for a QV4::Exception class and catches and old code that tries to still do catch (Exception &) instead of catch (...) Change-Id: Ie608bec6af652038aca6c9423c225a4d7eb13b39 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src/qml/jsruntime/qv4context.cpp')
-rw-r--r--src/qml/jsruntime/qv4context.cpp21
1 files changed, 3 insertions, 18 deletions
diff --git a/src/qml/jsruntime/qv4context.cpp b/src/qml/jsruntime/qv4context.cpp
index 4bba0bfbd1..be6e1649cf 100644
--- a/src/qml/jsruntime/qv4context.cpp
+++ b/src/qml/jsruntime/qv4context.cpp
@@ -48,7 +48,6 @@
#include <qv4argumentsobject_p.h>
#include "qv4function_p.h"
#include "qv4errorobject_p.h"
-#include "qv4exception_p.h"
using namespace QV4;
@@ -598,7 +597,7 @@ ReturnedValue ExecutionContext::getPropertyAndBase(const StringRef name, ObjectR
void ExecutionContext::throwError(const ValueRef value)
{
- Exception::throwException(this, value);
+ engine->throwException(value);
}
void ExecutionContext::throwError(const QString &message)
@@ -647,26 +646,12 @@ void ExecutionContext::throwUnimplemented(const QString &message)
ReturnedValue ExecutionContext::catchException(StackTrace *trace)
{
- if (!engine->hasException)
- Exception::rethrow();
- while (engine->current != this)
- engine->popContext();
- if (trace)
- *trace = engine->exceptionStackTrace;
- engine->exceptionStackTrace.clear();
- engine->hasException = false;
- ReturnedValue res = engine->exceptionValue.asReturnedValue();
- engine->exceptionValue = Encode::undefined();
- return res;
+ return engine->catchException(this, trace);
}
void ExecutionContext::rethrowException()
{
- if (engine->hasException) {
- while (engine->current != this)
- engine->popContext();
- }
- Exception::rethrow();
+ engine->rethrowException(this);
}
void ExecutionContext::throwReferenceError(const ValueRef value)