diff options
author | Lars Knoll <lars.knoll@theqtcompany.com> | 2014-11-18 17:35:48 +0100 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@digia.com> | 2014-12-11 08:40:18 +0100 |
commit | 7cc351c2ca6b0caad04cab411e91d8050cb284c8 (patch) | |
tree | 00fbd5fd22157ee1827cc6275ae2e9d10e694504 /src/qml/jsruntime/qv4engine_p.h | |
parent | 689caa14fc527a7e3c85403c963bec7451c6c1db (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.h | 50 |
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) |