aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4arrayobject.cpp
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@digia.com>2013-09-05 13:22:23 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-09-11 13:01:50 +0200
commit6e8e5d16e16d6ee683a5c06a24f8f202ed5239ff (patch)
treefa8e710ad0ee4ff6cc9738fa717883c74d452b95 /src/qml/jsruntime/qv4arrayobject.cpp
parent736afb8e9b3694efb8ca1fa8f3a8eeeaef530da2 (diff)
Move CallData onto the JS stack
Change-Id: I22e853acfd2da337344b581bb0412c5f9930c510 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/jsruntime/qv4arrayobject.cpp')
-rw-r--r--src/qml/jsruntime/qv4arrayobject.cpp93
1 files changed, 47 insertions, 46 deletions
diff --git a/src/qml/jsruntime/qv4arrayobject.cpp b/src/qml/jsruntime/qv4arrayobject.cpp
index 6fc661565d..08578e0002 100644
--- a/src/qml/jsruntime/qv4arrayobject.cpp
+++ b/src/qml/jsruntime/qv4arrayobject.cpp
@@ -42,6 +42,7 @@
#include "qv4arrayobject_p.h"
#include "qv4sparsearray_p.h"
#include "qv4objectproto_p.h"
+#include "qv4scopedvalue_p.h"
using namespace QV4;
@@ -137,8 +138,8 @@ Value ArrayPrototype::method_toString(SimpleCallContext *ctx)
QV4::Object *o = ctx->thisObject.toObject(ctx);
FunctionObject *f = o->get(ctx->engine->newString("join")).asFunctionObject();
if (f) {
- CALLDATA(0);
- d.thisObject = ctx->thisObject;
+ ScopedCallData d(ctx->engine, 0);
+ d->thisObject = ctx->thisObject;
return f->call(d);
}
return ObjectPrototype::method_toString(ctx);
@@ -636,12 +637,12 @@ Value ArrayPrototype::method_every(SimpleCallContext *ctx)
if (!exists)
continue;
- CALLDATA(3);
- d.args[0] = v;
- d.args[1] = Value::fromDouble(k);
- d.args[2] = Value::fromObject(instance);
- d.thisObject = thisArg;
- Value r = callback->call(d);
+ ScopedCallData callData(ctx->engine, 3);
+ callData->args[0] = v;
+ callData->args[1] = Value::fromDouble(k);
+ callData->args[2] = Value::fromObject(instance);
+ callData->thisObject = thisArg;
+ Value r = callback->call(callData);
ok = r.toBoolean();
}
return Value::fromBoolean(ok);
@@ -665,12 +666,12 @@ Value ArrayPrototype::method_some(SimpleCallContext *ctx)
if (!exists)
continue;
- CALLDATA(3);
- d.args[0] = v;
- d.args[1] = Value::fromDouble(k);
- d.args[2] = Value::fromObject(instance);
- d.thisObject = thisArg;
- Value r = callback->call(d);
+ ScopedCallData callData(ctx->engine, 3);
+ callData->thisObject = thisArg;
+ callData->args[0] = v;
+ callData->args[1] = Value::fromDouble(k);
+ callData->args[2] = Value::fromObject(instance);
+ Value r = callback->call(callData);
if (r.toBoolean())
return Value::fromBoolean(true);
}
@@ -695,12 +696,12 @@ Value ArrayPrototype::method_forEach(SimpleCallContext *ctx)
if (!exists)
continue;
- CALLDATA(3);
- d.args[0] = v;
- d.args[1] = Value::fromDouble(k);
- d.args[2] = Value::fromObject(instance);
- d.thisObject = thisArg;
- callback->call(d);
+ ScopedCallData callData(ctx->engine, 3);
+ callData->thisObject = thisArg;
+ callData->args[0] = v;
+ callData->args[1] = Value::fromDouble(k);
+ callData->args[2] = Value::fromObject(instance);
+ callback->call(callData);
}
return Value::undefinedValue();
}
@@ -727,12 +728,12 @@ Value ArrayPrototype::method_map(SimpleCallContext *ctx)
if (!exists)
continue;
- CALLDATA(3);
- d.args[0] = v;
- d.args[1] = Value::fromDouble(k);
- d.args[2] = Value::fromObject(instance);
- d.thisObject = thisArg;
- Value mapped = callback->call(d);
+ ScopedCallData callData(ctx->engine, 3);
+ callData->thisObject = thisArg;
+ callData->args[0] = v;
+ callData->args[1] = Value::fromDouble(k);
+ callData->args[2] = Value::fromObject(instance);
+ Value mapped = callback->call(callData);
a->arraySet(k, mapped);
}
return Value::fromObject(a);
@@ -760,12 +761,12 @@ Value ArrayPrototype::method_filter(SimpleCallContext *ctx)
if (!exists)
continue;
- CALLDATA(3);
- d.args[0] = v;
- d.args[1] = Value::fromDouble(k);
- d.args[2] = Value::fromObject(instance);
- d.thisObject = thisArg;
- Value selected = callback->call(d);
+ ScopedCallData callData(ctx->engine, 3);
+ callData->thisObject = thisArg;
+ callData->args[0] = v;
+ callData->args[1] = Value::fromDouble(k);
+ callData->args[2] = Value::fromObject(instance);
+ Value selected = callback->call(callData);
if (selected.toBoolean()) {
a->arraySet(to, v);
++to;
@@ -804,13 +805,13 @@ Value ArrayPrototype::method_reduce(SimpleCallContext *ctx)
bool kPresent;
Value v = instance->getIndexed(k, &kPresent);
if (kPresent) {
- CALLDATA(4);
- d.args[0] = acc;
- d.args[1] = v;
- d.args[2] = Value::fromDouble(k);
- d.args[3] = Value::fromObject(instance);
- d.thisObject = Value::undefinedValue();
- acc = callback->call(d);
+ ScopedCallData callData(ctx->engine, 4);
+ callData->thisObject = Value::undefinedValue();
+ callData->args[0] = acc;
+ callData->args[1] = v;
+ callData->args[2] = Value::fromDouble(k);
+ callData->args[3] = Value::fromObject(instance);
+ acc = callback->call(callData);
}
++k;
}
@@ -853,13 +854,13 @@ Value ArrayPrototype::method_reduceRight(SimpleCallContext *ctx)
bool kPresent;
Value v = instance->getIndexed(k - 1, &kPresent);
if (kPresent) {
- CALLDATA(4);
- d.args[0] = acc;
- d.args[1] = v;
- d.args[2] = Value::fromDouble(k - 1);
- d.args[3] = Value::fromObject(instance);
- d.thisObject = Value::undefinedValue();
- acc = callback->call(d);
+ ScopedCallData callData(ctx->engine, 4);
+ callData->thisObject = Value::undefinedValue();
+ callData->args[0] = acc;
+ callData->args[1] = v;
+ callData->args[2] = Value::fromDouble(k - 1);
+ callData->args[3] = Value::fromObject(instance);
+ acc = callback->call(callData);
}
--k;
}