aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4engine_p.h
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@theqtcompany.com>2014-11-18 17:35:48 +0100
committerSimon Hausmann <simon.hausmann@digia.com>2014-12-11 08:40:18 +0100
commit7cc351c2ca6b0caad04cab411e91d8050cb284c8 (patch)
tree00fbd5fd22157ee1827cc6275ae2e9d10e694504 /src/qml/jsruntime/qv4engine_p.h
parent689caa14fc527a7e3c85403c963bec7451c6c1db (diff)
Cleanup header inclusion order
Change-Id: I6f7973370c4468e7d1686a147efca66bfbfdd5b1 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/jsruntime/qv4engine_p.h')
-rw-r--r--src/qml/jsruntime/qv4engine_p.h50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/qml/jsruntime/qv4engine_p.h b/src/qml/jsruntime/qv4engine_p.h
index 60e6b2c285..f07448b4a2 100644
--- a/src/qml/jsruntime/qv4engine_p.h
+++ b/src/qml/jsruntime/qv4engine_p.h
@@ -36,6 +36,7 @@
#include "qv4global_p.h"
#include "private/qv4isel_p.h"
#include "qv4managed_p.h"
+#include "qv4context_p.h"
#include <private/qintrusivelist_p.h>
namespace WTF {
@@ -338,6 +339,55 @@ private:
QmlExtensions *m_qmlExtensions;
};
+struct ExecutionContextSaver
+{
+ ExecutionEngine *engine;
+ ExecutionContext *savedContext;
+
+ ExecutionContextSaver(ExecutionContext *context)
+ : engine(context->d()->engine)
+ , savedContext(context)
+ {
+ }
+ ~ExecutionContextSaver()
+ {
+ engine->current = savedContext;
+ }
+};
+
+inline void ExecutionEngine::pushContext(CallContext *context)
+{
+ Q_ASSERT(current && current->d() && context && context->d());
+ context->d()->parent = current->d();
+ current = context;
+}
+
+inline ExecutionContext *ExecutionEngine::popContext()
+{
+ Q_ASSERT(current->d()->parent);
+ // ### GC
+ current = reinterpret_cast<ExecutionContext *>(current->d()->parent);
+ Q_ASSERT(current && current->d());
+ return current;
+}
+
+inline
+Heap::ExecutionContext::ExecutionContext(ExecutionEngine *engine, ContextType t)
+ : Heap::Base(engine->executionContextClass)
+ , type(t)
+ , strictMode(false)
+ , engine(engine)
+ , parent(engine->currentContext()->d())
+ , outer(0)
+ , lookups(0)
+ , compilationUnit(0)
+ , lineNumber(-1)
+{
+ // ### GC
+ engine->current = reinterpret_cast<QV4::ExecutionContext *>(this);
+}
+
+
// ### Remove me
inline
void Managed::mark(QV4::ExecutionEngine *engine)