aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4script_p.h
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@digia.com>2014-11-28 10:05:24 +0100
committerSimon Hausmann <simon.hausmann@digia.com>2014-12-19 18:52:07 +0100
commit05bf96997c52775f14cfd4e34d25187feec897e0 (patch)
treedba1cb94f6a318d715343c75d54193bb170bb967 /src/qml/jsruntime/qv4script_p.h
parentf9d4cd6fd75617b2bddde4ba591b77d1d6b4727b (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.h33
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;