aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4argumentsobject.cpp
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2017-10-23 10:10:28 +0200
committerLars Knoll <lars.knoll@qt.io>2017-11-13 08:56:04 +0000
commita2142203ad6cdb54ec063e259b40171e13c5d4bd (patch)
tree5da2bc88d9015b5f938e7dcd118bd9c5a93c3e5c /src/qml/jsruntime/qv4argumentsobject.cpp
parent4d2763e425828ac35c2a03c0e675b83fa8dad668 (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.cpp13
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();