args->memberData()->data[CalleePropertyIndex] = context->d()->function->asReturnedValue();
}
Q_ASSERT(LengthPropertyIndex == args->internalClass()->find(context->d()->engine->id_length));
- args->memberData()->data[LengthPropertyIndex] = Primitive::fromInt32(context->d()->realArgumentCount);
+ args->memberData()->data[LengthPropertyIndex] = Primitive::fromInt32(context->d()->callData->argc);
}
void ArgumentsObject::fullyCreate()
if (fullyCreated())
return;
- uint numAccessors = qMin((int)context()->function->formalParameterCount(), context()->realArgumentCount);
- uint argCount = qMin(context()->realArgumentCount, context()->callData->argc);
+ uint numAccessors = qMin((int)context()->function->formalParameterCount(), context()->callData->argc);
+ uint argCount = context()->callData->argc;
ArrayData::realloc(this, Heap::ArrayData::Sparse, argCount, true);
context()->engine->requireArgumentsAccessors(numAccessors);
ScopedProperty map(scope);
PropertyAttributes mapAttrs;
bool isMapped = false;
- uint numAccessors = qMin((int)context()->function->formalParameterCount(), context()->realArgumentCount);
+ uint numAccessors = qMin((int)context()->function->formalParameterCount(), context()->callData->argc);
if (pd && index < (uint)numAccessors)
isMapped = arrayData()->attributes(index).isAccessor() &&
pd->getter() == context()->engine->argumentsAccessors[index].getter();
if (args->fullyCreated())
return Object::queryIndexed(m, index);
- uint numAccessors = qMin((int)args->context()->function->formalParameterCount(), args->context()->realArgumentCount);
- uint argCount = qMin(args->context()->realArgumentCount, args->context()->callData->argc);
+ uint numAccessors = qMin((int)args->context()->function->formalParameterCount(), args->context()->callData->argc);
+ uint argCount = args->context()->callData->argc;
if (index >= argCount)
return PropertyAttributes();
if (index >= numAccessors)
new (c) Heap::CallContext(d()->engine, Heap::ExecutionContext::Type_CallContext);
c->function = function->d();
- c->realArgumentCount = callData->argc;
c->strictMode = function->strictMode();
c->outer = function->scope();
::memcpy(c->callData, callData, sizeof(CallData) + (callData->argc - 1) * sizeof(Value));
if (callData->argc < static_cast<int>(compiledFunction->nFormals))
std::fill(c->callData->args + c->callData->argc, c->callData->args + compiledFunction->nFormals, Primitive::undefinedValue());
- c->callData->argc = qMax((uint)callData->argc, compiledFunction->nFormals);
return c;
}
ctx.lookups = ctx.compilationUnit->runtimeLookups;
ctx.outer = f->scope();
ctx.locals = scope.alloc(f->varCount());
- while (callData->argc < (int)f->formalParameterCount()) {
- callData->args[callData->argc] = Encode::undefined();
- ++callData->argc;
- }
+ for (int i = callData->argc; i < (int)f->formalParameterCount(); ++i)
+ callData->args[i] = Encode::undefined();
Q_ASSERT(v4->currentContext() == &ctx);
ScopedObject result(scope, Q_V4_PROFILE(v4, f->function()));
ctx.lookups = ctx.compilationUnit->runtimeLookups;
ctx.outer = f->scope();
ctx.locals = scope.alloc(f->varCount());
- while (callData->argc < (int)f->formalParameterCount()) {
- callData->args[callData->argc] = Encode::undefined();
- ++callData->argc;
- }
+ for (int i = callData->argc; i < (int)f->formalParameterCount(); ++i)
+ callData->args[i] = Encode::undefined();
Q_ASSERT(v4->currentContext() == &ctx);
ScopedValue result(scope, Q_V4_PROFILE(v4, f->function()));