diff options
author | Lars Knoll <lars.knoll@digia.com> | 2014-11-28 10:05:24 +0100 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@digia.com> | 2014-12-19 18:52:07 +0100 |
commit | 05bf96997c52775f14cfd4e34d25187feec897e0 (patch) | |
tree | dba1cb94f6a318d715343c75d54193bb170bb967 /src/qml/jsruntime/qv4script_p.h | |
parent | f9d4cd6fd75617b2bddde4ba591b77d1d6b4727b (diff) |
Return Heap::ExecutionContext for globalContext()
Change-Id: Ide7c81735be4662ff45bf268cfe750ff1f784453
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/jsruntime/qv4script_p.h')
-rw-r--r-- | src/qml/jsruntime/qv4script_p.h | 33 |
1 files changed, 23 insertions, 10 deletions
diff --git a/src/qml/jsruntime/qv4script_p.h b/src/qml/jsruntime/qv4script_p.h index a3cbcf4912..467e8af3e5 100644 --- a/src/qml/jsruntime/qv4script_p.h +++ b/src/qml/jsruntime/qv4script_p.h @@ -46,26 +46,38 @@ class QQmlContextData; namespace QV4 { struct ContextStateSaver { - ExecutionContext *savedContext; + Value *savedContext; bool strictMode; Lookup *lookups; CompiledData::CompilationUnit *compilationUnit; int lineNumber; - ContextStateSaver(ExecutionContext *context) - : savedContext(context) + ContextStateSaver(Scope &scope, ExecutionContext *context) + : savedContext(scope.alloc(1)) , strictMode(context->d()->strictMode) , lookups(context->d()->lookups) , compilationUnit(context->d()->compilationUnit) , lineNumber(context->d()->lineNumber) - {} + { + savedContext->m = context->d(); + } + ContextStateSaver(Scope &scope, Heap::ExecutionContext *context) + : savedContext(scope.alloc(1)) + , strictMode(context->strictMode) + , lookups(context->lookups) + , compilationUnit(context->compilationUnit) + , lineNumber(context->lineNumber) + { + savedContext->m = context; + } ~ContextStateSaver() { - savedContext->d()->strictMode = strictMode; - savedContext->d()->lookups = lookups; - savedContext->d()->compilationUnit = compilationUnit; - savedContext->d()->lineNumber = lineNumber; + Heap::ExecutionContext *ctx = static_cast<Heap::ExecutionContext *>(savedContext->m); + ctx->strictMode = strictMode; + ctx->lookups = lookups; + ctx->compilationUnit = compilationUnit; + ctx->lineNumber = lineNumber; } }; @@ -97,7 +109,7 @@ private: struct Q_QML_EXPORT Script { Script(ExecutionContext *scope, const QString &sourceCode, const QString &source = QString(), int line = 1, int column = 0) : sourceFile(source), line(line), column(column), sourceCode(sourceCode) - , scope(scope), strictMode(false), inheritContext(false), parsed(false) + , scope(scope->d()), strictMode(false), inheritContext(false), parsed(false) , vmFunction(0), parseAsBinding(false) {} Script(ExecutionEngine *engine, Object *qml, const QString &sourceCode, const QString &source = QString(), int line = 1, int column = 0) : sourceFile(source), line(line), column(column), sourceCode(sourceCode) @@ -109,7 +121,8 @@ struct Q_QML_EXPORT Script { int line; int column; QString sourceCode; - ExecutionContext *scope; + // ### GC + Heap::ExecutionContext *scope; bool strictMode; bool inheritContext; bool parsed; |