aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4context.cpp
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@digia.com>2013-09-16 22:02:27 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-09-22 01:06:20 +0200
commite441692b0b8f8fffdfdfa8a21c570adcd5cbae7a (patch)
tree9b764401d87682012328c46dc947721f47b428b2 /src/qml/jsruntime/qv4context.cpp
parenta0f8be4021caa9bb5055923f0eea3bee0e345235 (diff)
Further work towards an exact GC
Add some more convenience in the helper classes in qscopedvalue_p.h Make accesses to CallData safer, and change ExecutionEngine::newObject() to return a safe pointer. Change-Id: I980909754ce9681cf6faa1355bab3a1e5d6dd186 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/jsruntime/qv4context.cpp')
-rw-r--r--src/qml/jsruntime/qv4context.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/qml/jsruntime/qv4context.cpp b/src/qml/jsruntime/qv4context.cpp
index 6a97b9cfab..01cb2dd780 100644
--- a/src/qml/jsruntime/qv4context.cpp
+++ b/src/qml/jsruntime/qv4context.cpp
@@ -64,7 +64,7 @@ CallContext *ExecutionContext::newCallContext(void *stackSpace, FunctionObject *
c->function = function;
// ###
- c->arguments = const_cast<Value *>(callData->args);
+ c->arguments = const_cast<SafeValue *>(callData->args);
c->realArgumentCount = callData->argc;
c->argumentCount = callData->argc;
c->thisObject = callData->thisObject;
@@ -135,7 +135,7 @@ CallContext *ExecutionContext::newCallContext(FunctionObject *function, CallData
std::fill(c->locals, c->locals + function->varCount, Value::undefinedValue());
c->argumentCount = qMax((uint)callData->argc, function->formalParameterCount);
- c->arguments = c->locals + function->varCount;
+ c->arguments = static_cast<SafeValue *>(c->locals + function->varCount);
if (callData->argc)
::memcpy(c->arguments, callData->args, callData->argc * sizeof(Value));
if (callData->argc < function->formalParameterCount)
@@ -182,7 +182,7 @@ void ExecutionContext::createMutableBinding(String *name, bool deletable)
if (ctx->type >= Type_CallContext) {
CallContext *c = static_cast<CallContext *>(ctx);
if (!c->activation)
- c->activation = engine->newObject();
+ c->activation = engine->newObject()->getPointer();
activation = c->activation;
break;
}