diff options
author | Lars Knoll <lars.knoll@qt.io> | 2017-10-23 10:10:28 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2017-11-13 08:56:04 +0000 |
commit | a2142203ad6cdb54ec063e259b40171e13c5d4bd (patch) | |
tree | 5da2bc88d9015b5f938e7dcd118bd9c5a93c3e5c /src/qml/jsruntime/qv4argumentsobject.cpp | |
parent | 4d2763e425828ac35c2a03c0e675b83fa8dad668 (diff) |
Finally get rid of the QV4::Function pointer in the context
Change-Id: Iad6018f67faa956d385087865fca9d73419e363e
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/qml/jsruntime/qv4argumentsobject.cpp')
-rw-r--r-- | src/qml/jsruntime/qv4argumentsobject.cpp | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/qml/jsruntime/qv4argumentsobject.cpp b/src/qml/jsruntime/qv4argumentsobject.cpp index 5833e39561..4d34099c73 100644 --- a/src/qml/jsruntime/qv4argumentsobject.cpp +++ b/src/qml/jsruntime/qv4argumentsobject.cpp @@ -47,13 +47,14 @@ using namespace QV4; DEFINE_OBJECT_VTABLE(ArgumentsObject); -void Heap::ArgumentsObject::init(QV4::CallContext *context, bool strict) +void Heap::ArgumentsObject::init(QV4::CallContext *context, int nFormals, bool strict) { ExecutionEngine *v4 = internalClass->engine; Object::init(); fullyCreated = false; isStrict = strict; + this->nFormals = nFormals; this->context.set(v4, context->d()); Q_ASSERT(vtable() == QV4::ArgumentsObject::staticVTable()); @@ -86,8 +87,8 @@ void ArgumentsObject::fullyCreate() Scope scope(engine()); - uint argCount = context()->argc(); - uint numAccessors = qMin(context()->formalParameterCount(), argCount); + int argCount = context()->argc(); + uint numAccessors = qMin(d()->nFormals, argCount); ArrayData::realloc(this, Heap::ArrayData::Sparse, argCount, true); scope.engine->requireArgumentsAccessors(numAccessors); @@ -100,7 +101,7 @@ void ArgumentsObject::fullyCreate() } } arrayPut(numAccessors, context()->args() + numAccessors, argCount - numAccessors); - for (uint i = numAccessors; i < argCount; ++i) + for (int i = int(numAccessors); i < argCount; ++i) setArrayAttributes(i, Attr_Data); d()->fullyCreated = true; @@ -113,7 +114,7 @@ bool ArgumentsObject::defineOwnProperty(ExecutionEngine *engine, uint index, con Scope scope(engine); ScopedProperty map(scope); PropertyAttributes mapAttrs; - uint numAccessors = qMin(context()->formalParameterCount(), static_cast<uint>(context()->argc())); + uint numAccessors = qMin(d()->nFormals, context()->argc()); bool isMapped = false; if (arrayData() && index < numAccessors && arrayData()->attributes(index).isAccessor() && @@ -196,7 +197,7 @@ PropertyAttributes ArgumentsObject::queryIndexed(const Managed *m, uint index) if (args->fullyCreated()) return Object::queryIndexed(m, index); - uint numAccessors = qMin((int)args->context()->formalParameterCount(), args->context()->argc()); + uint numAccessors = qMin(args->d()->nFormals, args->context()->argc()); uint argCount = args->context()->argc(); if (index >= argCount) return PropertyAttributes(); |