aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2017-10-30 11:23:09 +0100
committerLars Knoll <lars.knoll@qt.io>2017-11-13 08:56:17 +0000
commit1b99f5d820a6c190e6fbe01c0a97052d7e222c85 (patch)
tree7b653a19d01d1bc08be50b3e06b08ad0dc8be880
parent3daf05ec2d7dbc408e2c302cdade667ec719d847 (diff)
Convert Array.push/pop to new calling convention
Change-Id: Id2c53adf56dff308f3953e4cea17b04f842bb2ff Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
-rw-r--r--src/qml/jsruntime/qv4arrayobject.cpp26
-rw-r--r--src/qml/jsruntime/qv4arrayobject_p.h4
2 files changed, 15 insertions, 15 deletions
diff --git a/src/qml/jsruntime/qv4arrayobject.cpp b/src/qml/jsruntime/qv4arrayobject.cpp
index dede423b73..1613da5b75 100644
--- a/src/qml/jsruntime/qv4arrayobject.cpp
+++ b/src/qml/jsruntime/qv4arrayobject.cpp
@@ -317,10 +317,10 @@ ReturnedValue ArrayPrototype::method_join(const BuiltinFunction *b, CallData *ca
return Encode(scope.engine->newString(R));
}
-ReturnedValue ArrayPrototype::method_pop(const BuiltinFunction *b, CallData *callData)
+ReturnedValue ArrayPrototype::method_pop(const FunctionObject *b, const Value *thisObject, const Value *, int)
{
Scope scope(b);
- ScopedObject instance(scope, callData->thisObject.toObject(scope.engine));
+ ScopedObject instance(scope, thisObject->toObject(scope.engine));
if (!instance)
RETURN_UNDEFINED();
@@ -347,10 +347,10 @@ ReturnedValue ArrayPrototype::method_pop(const BuiltinFunction *b, CallData *cal
return result->asReturnedValue();
}
-ReturnedValue ArrayPrototype::method_push(const BuiltinFunction *b, CallData *callData)
+ReturnedValue ArrayPrototype::method_push(const FunctionObject *b, const Value *thisObject, const Value *argv, int argc)
{
Scope scope(b);
- ScopedObject instance(scope, callData->thisObject.toObject(scope.engine));
+ ScopedObject instance(scope, thisObject->toObject(scope.engine));
if (!instance)
RETURN_UNDEFINED();
@@ -359,16 +359,16 @@ ReturnedValue ArrayPrototype::method_push(const BuiltinFunction *b, CallData *ca
uint len = instance->getLength();
- if (len + callData->argc() < len) {
+ if (len + argc < len) {
// ughh... this goes beyond UINT_MAX
double l = len;
ScopedString s(scope);
- for (int i = 0, ei = callData->argc(); i < ei; ++i) {
+ for (int i = 0, ei = argc; i < ei; ++i) {
s = Primitive::fromDouble(l + i).toString(scope.engine);
- if (!instance->put(s, callData->args[i]))
+ if (!instance->put(s, argv[i]))
return scope.engine->throwTypeError();
}
- double newLen = l + callData->argc();
+ double newLen = l + argc;
if (!instance->isArrayObject()) {
if (!instance->put(scope.engine->id_length(), ScopedValue(scope, Primitive::fromDouble(newLen))))
return scope.engine->throwTypeError();
@@ -379,17 +379,17 @@ ReturnedValue ArrayPrototype::method_push(const BuiltinFunction *b, CallData *ca
return Encode(newLen);
}
- if (!callData->argc())
+ if (!argc)
;
else if (!instance->protoHasArray() && instance->arrayData()->length() <= len && instance->arrayData()->type == Heap::ArrayData::Simple) {
- instance->arrayData()->vtable()->putArray(instance, len, callData->args, callData->argc());
+ instance->arrayData()->vtable()->putArray(instance, len, argv, argc);
len = instance->arrayData()->length();
} else {
- for (int i = 0, ei = callData->argc(); i < ei; ++i) {
- if (!instance->putIndexed(len + i, callData->args[i]))
+ for (int i = 0, ei = argc; i < ei; ++i) {
+ if (!instance->putIndexed(len + i, argv[i]))
return scope.engine->throwTypeError();
}
- len += callData->argc();
+ len += argc;
}
if (instance->isArrayObject())
instance->setArrayLengthUnchecked(len);
diff --git a/src/qml/jsruntime/qv4arrayobject_p.h b/src/qml/jsruntime/qv4arrayobject_p.h
index db12811cd7..af2e146599 100644
--- a/src/qml/jsruntime/qv4arrayobject_p.h
+++ b/src/qml/jsruntime/qv4arrayobject_p.h
@@ -85,8 +85,8 @@ struct ArrayPrototype: ArrayObject
static ReturnedValue method_find(const BuiltinFunction *, CallData *callData);
static ReturnedValue method_findIndex(const BuiltinFunction *, CallData *callData);
static ReturnedValue method_join(const BuiltinFunction *, CallData *callData);
- static ReturnedValue method_pop(const BuiltinFunction *, CallData *callData);
- static ReturnedValue method_push(const BuiltinFunction *, CallData *callData);
+ static ReturnedValue method_pop(const FunctionObject *, const Value *thisObject, const Value *argv, int argc);
+ static ReturnedValue method_push(const FunctionObject *, const Value *thisObject, const Value *argv, int argc);
static ReturnedValue method_reverse(const BuiltinFunction *, CallData *callData);
static ReturnedValue method_shift(const BuiltinFunction *, CallData *callData);
static ReturnedValue method_slice(const BuiltinFunction *, CallData *callData);