diff options
author | Lars Knoll <lars.knoll@digia.com> | 2013-09-25 10:09:26 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-09-28 13:33:08 +0200 |
commit | 0f2cf9074d4f0220f5c707eed478f99334814789 (patch) | |
tree | 685ea2295b8728b3545523e2625a4cf65f39b9ee /src/qml/jsruntime/qv4argumentsobject.cpp | |
parent | 1ef957834bf9040ccd001fa6d80e483b9b21452c (diff) |
Fix CallContext to not hold arguments on the C stack anymore
Change-Id: I35f46cce4f243d4b8b2bac9244f8fc26836f413b
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/jsruntime/qv4argumentsobject.cpp')
-rw-r--r-- | src/qml/jsruntime/qv4argumentsobject.cpp | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/src/qml/jsruntime/qv4argumentsobject.cpp b/src/qml/jsruntime/qv4argumentsobject.cpp index be4fbe60b8..34ccd0af49 100644 --- a/src/qml/jsruntime/qv4argumentsobject.cpp +++ b/src/qml/jsruntime/qv4argumentsobject.cpp @@ -64,28 +64,28 @@ ArgumentsObject::ArgumentsObject(CallContext *context) memberData[CalleePropertyIndex] = pd; memberData[CallerPropertyIndex] = pd; - arrayReserve(context->argumentCount); - for (unsigned int i = 0; i < context->argumentCount; ++i) - arrayData[i].value = context->arguments[i]; - arrayDataLen = context->argumentCount; + arrayReserve(context->callData->argc); + for (unsigned int i = 0; i < context->callData->argc; ++i) + arrayData[i].value = context->callData->args[i]; + arrayDataLen = context->callData->argc; } else { internalClass = engine()->argumentsObjectClass; Q_ASSERT(CalleePropertyIndex == internalClass->find(context->engine->id_callee)); memberData[CalleePropertyIndex].value = Value::fromObject(context->function); isNonStrictArgumentsObject = true; - uint numAccessors = qMin(context->function->formalParameterCount, context->realArgumentCount); - uint argCount = qMin((uint)context->realArgumentCount, context->argumentCount); + uint numAccessors = qMin((int)context->function->formalParameterCount, context->realArgumentCount); + uint argCount = qMin(context->realArgumentCount, context->callData->argc); arrayReserve(argCount); ensureArrayAttributes(); context->engine->requireArgumentsAccessors(numAccessors); for (uint i = 0; i < (uint)numAccessors; ++i) { - mappedArguments.append(context->arguments[i]); + mappedArguments.append(context->callData->args[i]); arrayData[i] = context->engine->argumentsAccessors.at(i); arrayAttributes[i] = Attr_Accessor; } for (uint i = numAccessors; i < argCount; ++i) { - arrayData[i] = Property::fromValue(context->arguments[i]); + arrayData[i] = Property::fromValue(context->callData->args[i]); arrayAttributes[i] = Attr_Data; } arrayDataLen = argCount; @@ -155,7 +155,7 @@ ReturnedValue ArgumentsGetterFunction::call(Managed *getter, CallData *callData) if (!o) getter->engine()->current->throwTypeError(); - assert(g->index < o->context->argumentCount); + assert(g->index < o->context->callData->argc); return o->context->argument(g->index); } @@ -171,8 +171,8 @@ ReturnedValue ArgumentsSetterFunction::call(Managed *setter, CallData *callData) if (!o) setter->engine()->current->throwTypeError(); - assert(s->index < o->context->argumentCount); - o->context->arguments[s->index] = callData->argc ? callData->args[0] : Value::undefinedValue(); + assert(s->index < o->context->callData->argc); + o->context->callData->args[s->index] = callData->argc ? callData->args[0] : Value::undefinedValue(); return Value::undefinedValue().asReturnedValue(); } |