diff options
author | Lars Knoll <lars.knoll@digia.com> | 2013-09-25 10:09:26 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-09-28 13:33:08 +0200 |
commit | 0f2cf9074d4f0220f5c707eed478f99334814789 (patch) | |
tree | 685ea2295b8728b3545523e2625a4cf65f39b9ee /src/qml/qml/v8 | |
parent | 1ef957834bf9040ccd001fa6d80e483b9b21452c (diff) |
Fix CallContext to not hold arguments on the C stack anymore
Change-Id: I35f46cce4f243d4b8b2bac9244f8fc26836f413b
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/qml/v8')
-rw-r--r-- | src/qml/qml/v8/qqmlbuiltinfunctions.cpp | 344 |
1 files changed, 172 insertions, 172 deletions
diff --git a/src/qml/qml/v8/qqmlbuiltinfunctions.cpp b/src/qml/qml/v8/qqmlbuiltinfunctions.cpp index cd90ed770f..691c8bd9df 100644 --- a/src/qml/qml/v8/qqmlbuiltinfunctions.cpp +++ b/src/qml/qml/v8/qqmlbuiltinfunctions.cpp @@ -159,10 +159,10 @@ Returns true if \c object is a valid reference to a Qt or QML object, otherwise */ ReturnedValue QtObject::method_isQtObject(QV4::SimpleCallContext *ctx) { - if (ctx->argumentCount == 0) + if (ctx->callData->argc == 0) return QV4::Encode(false); - return QV4::Encode(ctx->arguments[0].as<QV4::QObjectWrapper>() != 0); + return QV4::Encode(ctx->callData->args[0].as<QV4::QObjectWrapper>() != 0); } /*! @@ -173,14 +173,14 @@ All components should be in the range 0-1 inclusive. */ ReturnedValue QtObject::method_rgba(QV4::SimpleCallContext *ctx) { - int argCount = ctx->argumentCount; + int argCount = ctx->callData->argc; if (argCount < 3 || argCount > 4) V4THROW_ERROR("Qt.rgba(): Invalid arguments"); - double r = ctx->arguments[0].toNumber(); - double g = ctx->arguments[1].toNumber(); - double b = ctx->arguments[2].toNumber(); - double a = (argCount == 4) ? ctx->arguments[3].toNumber() : 1; + double r = ctx->callData->args[0].toNumber(); + double g = ctx->callData->args[1].toNumber(); + double b = ctx->callData->args[2].toNumber(); + double a = (argCount == 4) ? ctx->callData->args[3].toNumber() : 1; if (r < 0.0) r=0.0; if (r > 1.0) r=1.0; @@ -202,14 +202,14 @@ All components should be in the range 0-1 inclusive. */ ReturnedValue QtObject::method_hsla(QV4::SimpleCallContext *ctx) { - int argCount = ctx->argumentCount; + int argCount = ctx->callData->argc; if (argCount < 3 || argCount > 4) V4THROW_ERROR("Qt.hsla(): Invalid arguments"); - double h = ctx->arguments[0].toNumber(); - double s = ctx->arguments[1].toNumber(); - double l = ctx->arguments[2].toNumber(); - double a = (argCount == 4) ? ctx->arguments[3].toNumber() : 1; + double h = ctx->callData->args[0].toNumber(); + double s = ctx->callData->args[1].toNumber(); + double l = ctx->callData->args[2].toNumber(); + double a = (argCount == 4) ? ctx->callData->args[3].toNumber() : 1; if (h < 0.0) h=0.0; if (h > 1.0) h=1.0; @@ -233,14 +233,14 @@ basic type. */ ReturnedValue QtObject::method_colorEqual(QV4::SimpleCallContext *ctx) { - if (ctx->argumentCount != 2) + if (ctx->callData->argc != 2) V4THROW_ERROR("Qt.colorEqual(): Invalid arguments"); bool ok = false; QV8Engine *v8engine = ctx->engine->v8Engine; - QVariant lhs = v8engine->toVariant(ctx->arguments[0], -1); + QVariant lhs = v8engine->toVariant(ctx->callData->args[0], -1); if (lhs.userType() == QVariant::String) { lhs = QQmlStringConverters::colorFromString(lhs.toString(), &ok); if (!ok) { @@ -250,7 +250,7 @@ ReturnedValue QtObject::method_colorEqual(QV4::SimpleCallContext *ctx) V4THROW_ERROR("Qt.colorEqual(): Invalid arguments"); } - QVariant rhs = v8engine->toVariant(ctx->arguments[1], -1); + QVariant rhs = v8engine->toVariant(ctx->callData->args[1], -1); if (rhs.userType() == QVariant::String) { rhs = QQmlStringConverters::colorFromString(rhs.toString(), &ok); if (!ok) { @@ -273,13 +273,13 @@ The returned object has \c x, \c y, \c width and \c height attributes with the g */ ReturnedValue QtObject::method_rect(QV4::SimpleCallContext *ctx) { - if (ctx->argumentCount != 4) + if (ctx->callData->argc != 4) V4THROW_ERROR("Qt.rect(): Invalid arguments"); - double x = ctx->arguments[0].toNumber(); - double y = ctx->arguments[1].toNumber(); - double w = ctx->arguments[2].toNumber(); - double h = ctx->arguments[3].toNumber(); + double x = ctx->callData->args[0].toNumber(); + double y = ctx->callData->args[1].toNumber(); + double w = ctx->callData->args[2].toNumber(); + double h = ctx->callData->args[3].toNumber(); return ctx->engine->v8Engine->fromVariant(QVariant::fromValue(QRectF(x, y, w, h))); } @@ -290,11 +290,11 @@ Returns a Point with the specified \c x and \c y coordinates. */ ReturnedValue QtObject::method_point(QV4::SimpleCallContext *ctx) { - if (ctx->argumentCount != 2) + if (ctx->callData->argc != 2) V4THROW_ERROR("Qt.point(): Invalid arguments"); - double x = ctx->arguments[0].toNumber(); - double y = ctx->arguments[1].toNumber(); + double x = ctx->callData->args[0].toNumber(); + double y = ctx->callData->args[1].toNumber(); return ctx->engine->v8Engine->fromVariant(QVariant::fromValue(QPointF(x, y))); } @@ -305,11 +305,11 @@ Returns a Size with the specified \c width and \c height. */ ReturnedValue QtObject::method_size(QV4::SimpleCallContext *ctx) { - if (ctx->argumentCount != 2) + if (ctx->callData->argc != 2) V4THROW_ERROR("Qt.size(): Invalid arguments"); - double w = ctx->arguments[0].toNumber(); - double h = ctx->arguments[1].toNumber(); + double w = ctx->callData->args[0].toNumber(); + double h = ctx->callData->args[1].toNumber(); return ctx->engine->v8Engine->fromVariant(QVariant::fromValue(QSizeF(w, h))); } @@ -324,12 +324,12 @@ Invalid keys will be ignored. */ ReturnedValue QtObject::method_font(QV4::SimpleCallContext *ctx) { - if (ctx->argumentCount != 1 || !ctx->arguments[0].isObject()) + if (ctx->callData->argc != 1 || !ctx->callData->args[0].isObject()) V4THROW_ERROR("Qt.font(): Invalid arguments"); QV8Engine *v8engine = ctx->engine->v8Engine; bool ok = false; - QVariant v = QQml_valueTypeProvider()->createVariantFromJsObject(QMetaType::QFont, QQmlV4Handle(ctx->arguments[0]), v8engine, &ok); + QVariant v = QQml_valueTypeProvider()->createVariantFromJsObject(QMetaType::QFont, QQmlV4Handle(ctx->callData->args[0]), v8engine, &ok); if (!ok) V4THROW_ERROR("Qt.font(): Invalid argument: no valid font subproperties specified"); return v8engine->fromVariant(v); @@ -343,12 +343,12 @@ Returns a Vector2D with the specified \c x and \c y. */ ReturnedValue QtObject::method_vector2d(QV4::SimpleCallContext *ctx) { - if (ctx->argumentCount != 2) + if (ctx->callData->argc != 2) V4THROW_ERROR("Qt.vector2d(): Invalid arguments"); float xy[3]; // qvector2d uses float internally - xy[0] = ctx->arguments[0].toNumber(); - xy[1] = ctx->arguments[1].toNumber(); + xy[0] = ctx->callData->args[0].toNumber(); + xy[1] = ctx->callData->args[1].toNumber(); const void *params[] = { xy }; QV8Engine *v8engine = ctx->engine->v8Engine; @@ -361,13 +361,13 @@ Returns a Vector3D with the specified \c x, \c y and \c z. */ ReturnedValue QtObject::method_vector3d(QV4::SimpleCallContext *ctx) { - if (ctx->argumentCount != 3) + if (ctx->callData->argc != 3) V4THROW_ERROR("Qt.vector3d(): Invalid arguments"); float xyz[3]; // qvector3d uses float internally - xyz[0] = ctx->arguments[0].toNumber(); - xyz[1] = ctx->arguments[1].toNumber(); - xyz[2] = ctx->arguments[2].toNumber(); + xyz[0] = ctx->callData->args[0].toNumber(); + xyz[1] = ctx->callData->args[1].toNumber(); + xyz[2] = ctx->callData->args[2].toNumber(); const void *params[] = { xyz }; QV8Engine *v8engine = ctx->engine->v8Engine; @@ -380,14 +380,14 @@ Returns a Vector4D with the specified \c x, \c y, \c z and \c w. */ ReturnedValue QtObject::method_vector4d(QV4::SimpleCallContext *ctx) { - if (ctx->argumentCount != 4) + if (ctx->callData->argc != 4) V4THROW_ERROR("Qt.vector4d(): Invalid arguments"); float xyzw[4]; // qvector4d uses float internally - xyzw[0] = ctx->arguments[0].toNumber(); - xyzw[1] = ctx->arguments[1].toNumber(); - xyzw[2] = ctx->arguments[2].toNumber(); - xyzw[3] = ctx->arguments[3].toNumber(); + xyzw[0] = ctx->callData->args[0].toNumber(); + xyzw[1] = ctx->callData->args[1].toNumber(); + xyzw[2] = ctx->callData->args[2].toNumber(); + xyzw[3] = ctx->callData->args[3].toNumber(); const void *params[] = { xyzw }; QV8Engine *v8engine = ctx->engine->v8Engine; @@ -400,14 +400,14 @@ Returns a Quaternion with the specified \c scalar, \c x, \c y, and \c z. */ ReturnedValue QtObject::method_quaternion(QV4::SimpleCallContext *ctx) { - if (ctx->argumentCount != 4) + if (ctx->callData->argc != 4) V4THROW_ERROR("Qt.quaternion(): Invalid arguments"); qreal sxyz[4]; // qquaternion uses qreal internally - sxyz[0] = ctx->arguments[0].toNumber(); - sxyz[1] = ctx->arguments[1].toNumber(); - sxyz[2] = ctx->arguments[2].toNumber(); - sxyz[3] = ctx->arguments[3].toNumber(); + sxyz[0] = ctx->callData->args[0].toNumber(); + sxyz[1] = ctx->callData->args[1].toNumber(); + sxyz[2] = ctx->callData->args[2].toNumber(); + sxyz[3] = ctx->callData->args[3].toNumber(); const void *params[] = { sxyz }; QV8Engine *v8engine = ctx->engine->v8Engine; @@ -425,34 +425,34 @@ ReturnedValue QtObject::method_matrix4x4(QV4::SimpleCallContext *ctx) { QV8Engine *v8engine = ctx->engine->v8Engine; - if (ctx->argumentCount == 1 && ctx->arguments[0].isObject()) { + if (ctx->callData->argc == 1 && ctx->callData->args[0].isObject()) { bool ok = false; - QVariant v = QQml_valueTypeProvider()->createVariantFromJsObject(QMetaType::QMatrix4x4, QQmlV4Handle(ctx->arguments[0]), v8engine, &ok); + QVariant v = QQml_valueTypeProvider()->createVariantFromJsObject(QMetaType::QMatrix4x4, QQmlV4Handle(ctx->callData->args[0]), v8engine, &ok); if (!ok) V4THROW_ERROR("Qt.matrix4x4(): Invalid argument: not a valid matrix4x4 values array"); return v8engine->fromVariant(v); } - if (ctx->argumentCount != 16) + if (ctx->callData->argc != 16) V4THROW_ERROR("Qt.matrix4x4(): Invalid arguments"); qreal vals[16]; // qmatrix4x4 uses qreal internally - vals[0] = ctx->arguments[0].toNumber(); - vals[1] = ctx->arguments[1].toNumber(); - vals[2] = ctx->arguments[2].toNumber(); - vals[3] = ctx->arguments[3].toNumber(); - vals[4] = ctx->arguments[4].toNumber(); - vals[5] = ctx->arguments[5].toNumber(); - vals[6] = ctx->arguments[6].toNumber(); - vals[7] = ctx->arguments[7].toNumber(); - vals[8] = ctx->arguments[8].toNumber(); - vals[9] = ctx->arguments[9].toNumber(); - vals[10] = ctx->arguments[10].toNumber(); - vals[11] = ctx->arguments[11].toNumber(); - vals[12] = ctx->arguments[12].toNumber(); - vals[13] = ctx->arguments[13].toNumber(); - vals[14] = ctx->arguments[14].toNumber(); - vals[15] = ctx->arguments[15].toNumber(); + vals[0] = ctx->callData->args[0].toNumber(); + vals[1] = ctx->callData->args[1].toNumber(); + vals[2] = ctx->callData->args[2].toNumber(); + vals[3] = ctx->callData->args[3].toNumber(); + vals[4] = ctx->callData->args[4].toNumber(); + vals[5] = ctx->callData->args[5].toNumber(); + vals[6] = ctx->callData->args[6].toNumber(); + vals[7] = ctx->callData->args[7].toNumber(); + vals[8] = ctx->callData->args[8].toNumber(); + vals[9] = ctx->callData->args[9].toNumber(); + vals[10] = ctx->callData->args[10].toNumber(); + vals[11] = ctx->callData->args[11].toNumber(); + vals[12] = ctx->callData->args[12].toNumber(); + vals[13] = ctx->callData->args[13].toNumber(); + vals[14] = ctx->callData->args[14].toNumber(); + vals[15] = ctx->callData->args[15].toNumber(); const void *params[] = { vals }; return v8engine->fromVariant(QQml_valueTypeProvider()->createValueType(QMetaType::QMatrix4x4, 1, params)); @@ -474,11 +474,11 @@ If \c factor is not supplied, returns a color 50% lighter than \c baseColor (fac */ ReturnedValue QtObject::method_lighter(QV4::SimpleCallContext *ctx) { - if (ctx->argumentCount != 1 && ctx->argumentCount != 2) + if (ctx->callData->argc != 1 && ctx->callData->argc != 2) V4THROW_ERROR("Qt.lighter(): Invalid arguments"); QV8Engine *v8engine = ctx->engine->v8Engine; - QVariant v = v8engine->toVariant(ctx->arguments[0], -1); + QVariant v = v8engine->toVariant(ctx->callData->args[0], -1); if (v.userType() == QVariant::String) { bool ok = false; v = QQmlStringConverters::colorFromString(v.toString(), &ok); @@ -490,8 +490,8 @@ ReturnedValue QtObject::method_lighter(QV4::SimpleCallContext *ctx) } qreal factor = 1.5; - if (ctx->argumentCount == 2) - factor = ctx->arguments[1].toNumber(); + if (ctx->callData->argc == 2) + factor = ctx->callData->args[1].toNumber(); return v8engine->fromVariant(QQml_colorProvider()->lighter(v, factor)); } @@ -513,11 +513,11 @@ If \c factor is not supplied, returns a color 50% darker than \c baseColor (fact */ ReturnedValue QtObject::method_darker(QV4::SimpleCallContext *ctx) { - if (ctx->argumentCount != 1 && ctx->argumentCount != 2) + if (ctx->callData->argc != 1 && ctx->callData->argc != 2) V4THROW_ERROR("Qt.darker(): Invalid arguments"); QV8Engine *v8engine = ctx->engine->v8Engine; - QVariant v = v8engine->toVariant(ctx->arguments[0], -1); + QVariant v = v8engine->toVariant(ctx->callData->args[0], -1); if (v.userType() == QVariant::String) { bool ok = false; v = QQmlStringConverters::colorFromString(v.toString(), &ok); @@ -529,8 +529,8 @@ ReturnedValue QtObject::method_darker(QV4::SimpleCallContext *ctx) } qreal factor = 2.0; - if (ctx->argumentCount == 2) - factor = ctx->arguments[1].toNumber(); + if (ctx->callData->argc == 2) + factor = ctx->callData->args[1].toNumber(); return v8engine->fromVariant(QQml_colorProvider()->darker(v, factor)); } @@ -561,13 +561,13 @@ ReturnedValue QtObject::method_darker(QV4::SimpleCallContext *ctx) */ ReturnedValue QtObject::method_tint(QV4::SimpleCallContext *ctx) { - if (ctx->argumentCount != 2) + if (ctx->callData->argc != 2) V4THROW_ERROR("Qt.tint(): Invalid arguments"); QV8Engine *v8engine = ctx->engine->v8Engine; // base color - QVariant v1 = v8engine->toVariant(ctx->arguments[0], -1); + QVariant v1 = v8engine->toVariant(ctx->callData->args[0], -1); if (v1.userType() == QVariant::String) { bool ok = false; v1 = QQmlStringConverters::colorFromString(v1.toString(), &ok); @@ -579,7 +579,7 @@ ReturnedValue QtObject::method_tint(QV4::SimpleCallContext *ctx) } // tint color - QVariant v2 = v8engine->toVariant(ctx->arguments[1], -1); + QVariant v2 = v8engine->toVariant(ctx->callData->args[1], -1); if (v2.userType() == QVariant::String) { bool ok = false; v2 = QQmlStringConverters::colorFromString(v2.toString(), &ok); @@ -611,20 +611,20 @@ If \a format is not specified, \a date is formatted using */ ReturnedValue QtObject::method_formatDate(QV4::SimpleCallContext *ctx) { - if (ctx->argumentCount < 1 || ctx->argumentCount > 2) + if (ctx->callData->argc < 1 || ctx->callData->argc > 2) V4THROW_ERROR("Qt.formatDate(): Invalid arguments"); QV8Engine *v8engine = ctx->engine->v8Engine; Qt::DateFormat enumFormat = Qt::DefaultLocaleShortDate; - QDate date = v8engine->toVariant(ctx->arguments[0], -1).toDateTime().date(); + QDate date = v8engine->toVariant(ctx->callData->args[0], -1).toDateTime().date(); QString formattedDate; - if (ctx->argumentCount == 2) { - if (String *s = ctx->arguments[1].asString()) { + if (ctx->callData->argc == 2) { + if (String *s = ctx->callData->args[1].asString()) { QString format = s->toQString(); formattedDate = date.toString(format); - } else if (ctx->arguments[1].isNumber()) { - quint32 intFormat = ctx->arguments[1].asDouble(); + } else if (ctx->callData->args[1].isNumber()) { + quint32 intFormat = ctx->callData->args[1].asDouble(); Qt::DateFormat format = Qt::DateFormat(intFormat); formattedDate = date.toString(format); } else { @@ -654,26 +654,26 @@ If \a format is not specified, \a time is formatted using */ ReturnedValue QtObject::method_formatTime(QV4::SimpleCallContext *ctx) { - if (ctx->argumentCount < 1 || ctx->argumentCount > 2) + if (ctx->callData->argc < 1 || ctx->callData->argc > 2) V4THROW_ERROR("Qt.formatTime(): Invalid arguments"); QV8Engine *v8engine = ctx->engine->v8Engine; - QVariant argVariant = v8engine->toVariant(ctx->arguments[0], -1); + QVariant argVariant = v8engine->toVariant(ctx->callData->args[0], -1); QTime time; - if (ctx->arguments[0].asDateObject() || (argVariant.type() == QVariant::String)) + if (ctx->callData->args[0].asDateObject() || (argVariant.type() == QVariant::String)) time = argVariant.toDateTime().time(); else // if (argVariant.type() == QVariant::Time), or invalid. time = argVariant.toTime(); Qt::DateFormat enumFormat = Qt::DefaultLocaleShortDate; QString formattedTime; - if (ctx->argumentCount == 2) { - if (String *s = ctx->arguments[1].asString()) { + if (ctx->callData->argc == 2) { + if (String *s = ctx->callData->args[1].asString()) { QString format = s->toQString(); formattedTime = time.toString(format); - } else if (ctx->arguments[1].isNumber()) { - quint32 intFormat = ctx->arguments[1].asDouble(); + } else if (ctx->callData->args[1].isNumber()) { + quint32 intFormat = ctx->callData->args[1].asDouble(); Qt::DateFormat format = Qt::DateFormat(intFormat); formattedTime = time.toString(format); } else { @@ -778,20 +778,20 @@ with the \a format values below to produce the following results: */ ReturnedValue QtObject::method_formatDateTime(QV4::SimpleCallContext *ctx) { - if (ctx->argumentCount < 1 || ctx->argumentCount > 2) + if (ctx->callData->argc < 1 || ctx->callData->argc > 2) V4THROW_ERROR("Qt.formatDateTime(): Invalid arguments"); QV8Engine *v8engine = ctx->engine->v8Engine; Qt::DateFormat enumFormat = Qt::DefaultLocaleShortDate; - QDateTime dt = v8engine->toVariant(ctx->arguments[0], -1).toDateTime(); + QDateTime dt = v8engine->toVariant(ctx->callData->args[0], -1).toDateTime(); QString formattedDt; - if (ctx->argumentCount == 2) { - if (String *s = ctx->arguments[1].asString()) { + if (ctx->callData->argc == 2) { + if (String *s = ctx->callData->args[1].asString()) { QString format = s->toQString(); formattedDt = dt.toString(format); - } else if (ctx->arguments[1].isNumber()) { - quint32 intFormat = ctx->arguments[1].asDouble(); + } else if (ctx->callData->args[1].isNumber()) { + quint32 intFormat = ctx->callData->args[1].asDouble(); Qt::DateFormat format = Qt::DateFormat(intFormat); formattedDt = dt.toString(format); } else { @@ -810,7 +810,7 @@ Attempts to open the specified \c target url in an external application, based o */ ReturnedValue QtObject::method_openUrlExternally(QV4::SimpleCallContext *ctx) { - if (ctx->argumentCount != 1) + if (ctx->callData->argc != 1) return QV4::Encode(false); QV8Engine *v8engine = ctx->engine->v8Engine; @@ -827,7 +827,7 @@ ReturnedValue QtObject::method_resolvedUrl(QV4::SimpleCallContext *ctx) { QV8Engine *v8engine = ctx->engine->v8Engine; - QUrl url = v8engine->toVariant(ctx->arguments[0], -1).toUrl(); + QUrl url = v8engine->toVariant(ctx->callData->args[0], -1).toUrl(); QQmlEngine *e = v8engine->engine(); QQmlEnginePrivate *p = 0; if (e) p = QQmlEnginePrivate::get(e); @@ -848,7 +848,7 @@ Returns a list of the font families available to the application. */ ReturnedValue QtObject::method_fontFamilies(SimpleCallContext *ctx) { - if (ctx->argumentCount != 0) + if (ctx->callData->argc != 0) V4THROW_ERROR("Qt.fontFamilies(): Invalid arguments"); QV8Engine *v8engine = ctx->engine->v8Engine; @@ -861,10 +861,10 @@ Returns a hex string of the md5 hash of \c data. */ ReturnedValue QtObject::method_md5(SimpleCallContext *ctx) { - if (ctx->argumentCount != 1) + if (ctx->callData->argc != 1) V4THROW_ERROR("Qt.md5(): Invalid arguments"); - QByteArray data = ctx->arguments[0].toQStringNoThrow().toUtf8(); + QByteArray data = ctx->callData->args[0].toQStringNoThrow().toUtf8(); QByteArray result = QCryptographicHash::hash(data, QCryptographicHash::Md5); return Value::fromString(ctx, QLatin1String(result.toHex())).asReturnedValue(); } @@ -875,10 +875,10 @@ Binary to ASCII - this function returns a base64 encoding of \c data. */ ReturnedValue QtObject::method_btoa(SimpleCallContext *ctx) { - if (ctx->argumentCount != 1) + if (ctx->callData->argc != 1) V4THROW_ERROR("Qt.btoa(): Invalid arguments"); - QByteArray data = ctx->arguments[0].toQStringNoThrow().toUtf8(); + QByteArray data = ctx->callData->args[0].toQStringNoThrow().toUtf8(); return Value::fromString(ctx, QLatin1String(data.toBase64())).asReturnedValue(); } @@ -889,10 +889,10 @@ ASCII to binary - this function returns a base64 decoding of \c data. */ ReturnedValue QtObject::method_atob(SimpleCallContext *ctx) { - if (ctx->argumentCount != 1) + if (ctx->callData->argc != 1) V4THROW_ERROR("Qt.atob(): Invalid arguments"); - QByteArray data = ctx->arguments[0].toQStringNoThrow().toLatin1(); + QByteArray data = ctx->callData->args[0].toQStringNoThrow().toLatin1(); return Value::fromString(ctx, QString::fromUtf8(QByteArray::fromBase64(data))).asReturnedValue(); } @@ -939,7 +939,7 @@ See \l {Dynamic QML Object Creation from JavaScript} for more information on usi ReturnedValue QtObject::method_createQmlObject(SimpleCallContext *ctx) { Scope scope(ctx); - if (ctx->argumentCount < 2 || ctx->argumentCount > 3) + if (ctx->callData->argc < 2 || ctx->callData->argc > 3) V4THROW_ERROR("Qt.createQmlObject(): Invalid arguments"); struct Error { @@ -979,13 +979,13 @@ ReturnedValue QtObject::method_createQmlObject(SimpleCallContext *ctx) effectiveContext = context->asQQmlContext(); Q_ASSERT(context && effectiveContext); - QString qml = ctx->arguments[0].toQStringNoThrow(); + QString qml = ctx->callData->args[0].toQStringNoThrow(); if (qml.isEmpty()) return QV4::Encode::null(); QUrl url; - if (ctx->argumentCount > 2) - url = QUrl(ctx->arguments[2].toQStringNoThrow()); + if (ctx->callData->argc > 2) + url = QUrl(ctx->callData->args[2].toQStringNoThrow()); else url = QUrl(QLatin1String("inline")); @@ -993,7 +993,7 @@ ReturnedValue QtObject::method_createQmlObject(SimpleCallContext *ctx) url = context->resolvedUrl(url); QObject *parentArg = 0; - QV4::Scoped<QV4::QObjectWrapper> qobjectWrapper(scope, ctx->arguments[1]); + QV4::Scoped<QV4::QObjectWrapper> qobjectWrapper(scope, ctx->callData->args[1]); if (!!qobjectWrapper) parentArg = qobjectWrapper->object(); if (!parentArg) @@ -1073,7 +1073,7 @@ ReturnedValue QtObject::method_createComponent(SimpleCallContext *ctx) { const QString invalidArgs = QStringLiteral("Qt.createComponent(): Invalid arguments"); const QString invalidParent = QStringLiteral("Qt.createComponent(): Invalid parent object"); - if (ctx->argumentCount < 1 || ctx->argumentCount > 3) + if (ctx->callData->argc < 1 || ctx->callData->argc > 3) ctx->throwError(invalidArgs); QV8Engine *v8engine = ctx->engine->v8Engine; @@ -1085,7 +1085,7 @@ ReturnedValue QtObject::method_createComponent(SimpleCallContext *ctx) effectiveContext = 0; Q_ASSERT(context); - QString arg = ctx->arguments[0].toQStringNoThrow(); + QString arg = ctx->callData->args[0].toQStringNoThrow(); if (arg.isEmpty()) return QV4::Encode::null(); @@ -1093,23 +1093,23 @@ ReturnedValue QtObject::method_createComponent(SimpleCallContext *ctx) QObject *parentArg = 0; int consumedCount = 1; - if (ctx->argumentCount > 1) { - Value lastArg = ctx->arguments[ctx->argumentCount-1]; + if (ctx->callData->argc > 1) { + Value lastArg = ctx->callData->args[ctx->callData->argc-1]; // The second argument could be the mode enum - if (ctx->arguments[1].isInteger()) { - int mode = ctx->arguments[1].integerValue(); + if (ctx->callData->args[1].isInteger()) { + int mode = ctx->callData->args[1].integerValue(); if (mode != int(QQmlComponent::PreferSynchronous) && mode != int(QQmlComponent::Asynchronous)) ctx->throwError(invalidArgs); compileMode = QQmlComponent::CompilationMode(mode); consumedCount += 1; } else { // The second argument could be the parent only if there are exactly two args - if ((ctx->argumentCount != 2) || !(lastArg.isObject() || lastArg.isNull())) + if ((ctx->callData->argc != 2) || !(lastArg.isObject() || lastArg.isNull())) ctx->throwError(invalidArgs); } - if (consumedCount < ctx->argumentCount) { + if (consumedCount < ctx->callData->argc) { if (lastArg.isObject()) { if (QV4::QObjectWrapper *qobjectWrapper = lastArg.as<QV4::QObjectWrapper>()) parentArg = qobjectWrapper->object(); @@ -1155,14 +1155,14 @@ ReturnedValue QtObject::method_createComponent(SimpleCallContext *ctx) ReturnedValue QtObject::method_locale(SimpleCallContext *ctx) { QString code; - if (ctx->argumentCount > 1) + if (ctx->callData->argc > 1) V4THROW_ERROR("locale() requires 0 or 1 argument"); - if (ctx->argumentCount == 1 && !ctx->arguments[0].isString()) + if (ctx->callData->argc == 1 && !ctx->callData->args[0].isString()) V4THROW_TYPE("locale(): argument (locale code) must be a string"); QV8Engine *v8engine = ctx->engine->v8Engine; - if (ctx->argumentCount == 1) - code = ctx->arguments[0].toQStringNoThrow(); + if (ctx->callData->argc == 1) + code = ctx->callData->args[0].toQStringNoThrow(); return QQmlLocale::locale(v8engine, code); } @@ -1248,9 +1248,9 @@ DEFINE_MANAGED_VTABLE(BindingFunction); */ ReturnedValue QtObject::method_binding(SimpleCallContext *ctx) { - if (ctx->argumentCount != 1) + if (ctx->callData->argc != 1) V4THROW_ERROR("binding() requires 1 argument"); - QV4::FunctionObject *f = ctx->arguments[0].asFunctionObject(); + QV4::FunctionObject *f = ctx->callData->args[0].asFunctionObject(); if (!f) V4THROW_TYPE("binding(): argument (binding expression) must be a function"); @@ -1261,7 +1261,7 @@ ReturnedValue QtObject::method_binding(SimpleCallContext *ctx) ReturnedValue QtObject::method_get_platform(SimpleCallContext *ctx) { // ### inefficient. Should be just a value based getter - Object *o = ctx->thisObject.asObject(); + Object *o = ctx->callData->thisObject.asObject(); if (!o) ctx->throwTypeError(); QtObject *qt = o->as<QtObject>(); @@ -1278,7 +1278,7 @@ ReturnedValue QtObject::method_get_platform(SimpleCallContext *ctx) ReturnedValue QtObject::method_get_application(SimpleCallContext *ctx) { // ### inefficient. Should be just a value based getter - Object *o = ctx->thisObject.asObject(); + Object *o = ctx->callData->thisObject.asObject(); if (!o) ctx->throwTypeError(); QtObject *qt = o->as<QtObject>(); @@ -1360,11 +1360,11 @@ static QV4::ReturnedValue writeToConsole(ConsoleLogTypes logType, SimpleCallCont QString result; QV4::ExecutionEngine *v4 = ctx->engine; - for (int i = 0; i < ctx->argumentCount; ++i) { + for (int i = 0; i < ctx->callData->argc; ++i) { if (i != 0) result.append(QLatin1Char(' ')); - QV4::Value value = ctx->arguments[i]; + QV4::Value value = ctx->callData->args[i]; if (value.asArrayObject()) result.append(QStringLiteral("[") + value.toQStringNoThrow() + QStringLiteral("]")); else @@ -1458,24 +1458,24 @@ QV4::ReturnedValue ConsoleObject::method_profileEnd(SimpleCallContext *ctx) QV4::ReturnedValue ConsoleObject::method_time(SimpleCallContext *ctx) { - if (ctx->argumentCount != 1) + if (ctx->callData->argc != 1) V4THROW_ERROR("console.time(): Invalid arguments"); QV8Engine *v8engine = ctx->engine->v8Engine; - QString name = ctx->arguments[0].toQStringNoThrow(); + QString name = ctx->callData->args[0].toQStringNoThrow(); v8engine->startTimer(name); return QV4::Encode::undefined(); } QV4::ReturnedValue ConsoleObject::method_timeEnd(SimpleCallContext *ctx) { - if (ctx->argumentCount != 1) + if (ctx->callData->argc != 1) V4THROW_ERROR("console.time(): Invalid arguments"); QV8Engine *v8engine = ctx->engine->v8Engine; - QString name = ctx->arguments[0].toQStringNoThrow(); + QString name = ctx->callData->args[0].toQStringNoThrow(); bool wasRunning; qint64 elapsed = v8engine->stopTimer(name, &wasRunning); if (wasRunning) { @@ -1488,8 +1488,8 @@ QV4::ReturnedValue ConsoleObject::method_count(SimpleCallContext *ctx) { // first argument: name to print. Ignore any additional arguments QString name; - if (ctx->argumentCount > 0) - name = ctx->arguments[0].toQStringNoThrow(); + if (ctx->callData->argc > 0) + name = ctx->callData->args[0].toQStringNoThrow(); QV4::ExecutionEngine *v4 = ctx->engine; QV8Engine *v8engine = ctx->engine->v8Engine; @@ -1509,7 +1509,7 @@ QV4::ReturnedValue ConsoleObject::method_count(SimpleCallContext *ctx) QV4::ReturnedValue ConsoleObject::method_trace(SimpleCallContext *ctx) { - if (ctx->argumentCount != 0) + if (ctx->callData->argc != 0) V4THROW_ERROR("console.trace(): Invalid arguments"); QV4::ExecutionEngine *v4 = ctx->engine; @@ -1530,18 +1530,18 @@ QV4::ReturnedValue ConsoleObject::method_warn(SimpleCallContext *ctx) QV4::ReturnedValue ConsoleObject::method_assert(SimpleCallContext *ctx) { - if (ctx->argumentCount == 0) + if (ctx->callData->argc == 0) V4THROW_ERROR("console.assert(): Missing argument"); QV4::ExecutionEngine *v4 = ctx->engine; - if (!ctx->arguments[0].toBoolean()) { + if (!ctx->callData->args[0].toBoolean()) { QString message; - for (int i = 1; i < ctx->argumentCount; ++i) { + for (int i = 1; i < ctx->callData->argc; ++i) { if (i != 1) message.append(QLatin1Char(' ')); - message.append(ctx->arguments[i].toQStringNoThrow()); + message.append(ctx->callData->args[i].toQStringNoThrow()); } QString stack = jsStack(v4); @@ -1556,7 +1556,7 @@ QV4::ReturnedValue ConsoleObject::method_assert(SimpleCallContext *ctx) QV4::ReturnedValue ConsoleObject::method_exception(SimpleCallContext *ctx) { - if (ctx->argumentCount == 0) + if (ctx->callData->argc == 0) V4THROW_ERROR("console.exception(): Missing argument"); writeToConsole(Error, ctx, true); @@ -1614,29 +1614,29 @@ void QV4::GlobalExtensions::init(QQmlEngine *qmlEngine, Object *globalObject) */ ReturnedValue GlobalExtensions::method_qsTranslate(SimpleCallContext *ctx) { - if (ctx->argumentCount < 2) + if (ctx->callData->argc < 2) V4THROW_ERROR("qsTranslate() requires at least two arguments"); - if (!ctx->arguments[0].isString()) + if (!ctx->callData->args[0].isString()) V4THROW_ERROR("qsTranslate(): first argument (context) must be a string"); - if (!ctx->arguments[1].isString()) + if (!ctx->callData->args[1].isString()) V4THROW_ERROR("qsTranslate(): second argument (sourceText) must be a string"); - if ((ctx->argumentCount > 2) && !ctx->arguments[2].isString()) + if ((ctx->callData->argc > 2) && !ctx->callData->args[2].isString()) V4THROW_ERROR("qsTranslate(): third argument (disambiguation) must be a string"); - QString context = ctx->arguments[0].toQStringNoThrow(); - QString text = ctx->arguments[1].toQStringNoThrow(); + QString context = ctx->callData->args[0].toQStringNoThrow(); + QString text = ctx->callData->args[1].toQStringNoThrow(); QString comment; - if (ctx->argumentCount > 2) comment = ctx->arguments[2].toQStringNoThrow(); + if (ctx->callData->argc > 2) comment = ctx->callData->args[2].toQStringNoThrow(); int i = 3; - if (ctx->argumentCount > i && ctx->arguments[i].isString()) { + if (ctx->callData->argc > i && ctx->callData->args[i].isString()) { qWarning("qsTranslate(): specifying the encoding as fourth argument is deprecated"); ++i; } int n = -1; - if (ctx->argumentCount > i) - n = ctx->arguments[i].toInt32(); + if (ctx->callData->argc > i) + n = ctx->callData->args[i].toInt32(); QString result = QCoreApplication::translate(context.toUtf8().constData(), text.toUtf8().constData(), @@ -1670,9 +1670,9 @@ ReturnedValue GlobalExtensions::method_qsTranslate(SimpleCallContext *ctx) */ ReturnedValue GlobalExtensions::method_qsTranslateNoOp(SimpleCallContext *ctx) { - if (ctx->argumentCount < 2) + if (ctx->callData->argc < 2) return QV4::Encode::undefined(); - return ctx->arguments[1].asReturnedValue(); + return ctx->callData->args[1].asReturnedValue(); } /*! @@ -1694,13 +1694,13 @@ ReturnedValue GlobalExtensions::method_qsTranslateNoOp(SimpleCallContext *ctx) */ ReturnedValue GlobalExtensions::method_qsTr(SimpleCallContext *ctx) { - if (ctx->argumentCount < 1) + if (ctx->callData->argc < 1) V4THROW_ERROR("qsTr() requires at least one argument"); - if (!ctx->arguments[0].isString()) + if (!ctx->callData->args[0].isString()) V4THROW_ERROR("qsTr(): first argument (sourceText) must be a string"); - if ((ctx->argumentCount > 1) && !ctx->arguments[1].isString()) + if ((ctx->callData->argc > 1) && !ctx->callData->args[1].isString()) V4THROW_ERROR("qsTr(): second argument (disambiguation) must be a string"); - if ((ctx->argumentCount > 2) && !ctx->arguments[2].isNumber()) + if ((ctx->callData->argc > 2) && !ctx->callData->args[2].isNumber()) V4THROW_ERROR("qsTr(): third argument (n) must be a number"); QV8Engine *v8engine = ctx->engine->v8Engine; @@ -1710,13 +1710,13 @@ ReturnedValue GlobalExtensions::method_qsTr(SimpleCallContext *ctx) int lastSlash = path.lastIndexOf(QLatin1Char('/')); QString context = (lastSlash > -1) ? path.mid(lastSlash + 1, path.length()-lastSlash-5) : QString(); - QString text = ctx->arguments[0].toQStringNoThrow(); + QString text = ctx->callData->args[0].toQStringNoThrow(); QString comment; - if (ctx->argumentCount > 1) - comment = ctx->arguments[1].toQStringNoThrow(); + if (ctx->callData->argc > 1) + comment = ctx->callData->args[1].toQStringNoThrow(); int n = -1; - if (ctx->argumentCount > 2) - n = ctx->arguments[2].toInt32(); + if (ctx->callData->argc > 2) + n = ctx->callData->args[2].toInt32(); QString result = QCoreApplication::translate(context.toUtf8().constData(), text.toUtf8().constData(), comment.toUtf8().constData(), n); @@ -1748,9 +1748,9 @@ ReturnedValue GlobalExtensions::method_qsTr(SimpleCallContext *ctx) */ ReturnedValue GlobalExtensions::method_qsTrNoOp(SimpleCallContext *ctx) { - if (ctx->argumentCount < 1) + if (ctx->callData->argc < 1) return QV4::Encode::undefined(); - return ctx->arguments[0].asReturnedValue(); + return ctx->callData->args[0].asReturnedValue(); } /*! @@ -1785,18 +1785,18 @@ ReturnedValue GlobalExtensions::method_qsTrNoOp(SimpleCallContext *ctx) */ ReturnedValue GlobalExtensions::method_qsTrId(SimpleCallContext *ctx) { - if (ctx->argumentCount < 1) + if (ctx->callData->argc < 1) V4THROW_ERROR("qsTrId() requires at least one argument"); - if (!ctx->arguments[0].isString()) + if (!ctx->callData->args[0].isString()) V4THROW_TYPE("qsTrId(): first argument (id) must be a string"); - if (ctx->argumentCount > 1 && !ctx->arguments[1].isNumber()) + if (ctx->callData->argc > 1 && !ctx->callData->args[1].isNumber()) V4THROW_TYPE("qsTrId(): second argument (n) must be a number"); int n = -1; - if (ctx->argumentCount > 1) - n = ctx->arguments[1].toInt32(); + if (ctx->callData->argc > 1) + n = ctx->callData->args[1].toInt32(); - return Value::fromString(ctx, qtTrId(ctx->arguments[0].toQStringNoThrow().toUtf8().constData(), n)).asReturnedValue(); + return Value::fromString(ctx, qtTrId(ctx->callData->args[0].toQStringNoThrow().toUtf8().constData(), n)).asReturnedValue(); } /*! @@ -1817,9 +1817,9 @@ ReturnedValue GlobalExtensions::method_qsTrId(SimpleCallContext *ctx) */ ReturnedValue GlobalExtensions::method_qsTrIdNoOp(SimpleCallContext *ctx) { - if (ctx->argumentCount < 1) + if (ctx->callData->argc < 1) return QV4::Encode::undefined(); - return ctx->arguments[0].asReturnedValue(); + return ctx->callData->args[0].asReturnedValue(); } #endif // QT_NO_TRANSLATION @@ -1835,11 +1835,11 @@ QV4::ReturnedValue GlobalExtensions::method_gc(SimpleCallContext *ctx) ReturnedValue GlobalExtensions::method_string_arg(SimpleCallContext *ctx) { - QString value = ctx->thisObject.toQStringNoThrow(); - if (ctx->argumentCount != 1) + QString value = ctx->callData->thisObject.toQStringNoThrow(); + if (ctx->callData->argc != 1) V4THROW_ERROR("String.arg(): Invalid arguments"); - QV4::Value arg = ctx->arguments[0]; + QV4::Value arg = ctx->callData->args[0]; if (arg.isInteger()) return Value::fromString(ctx, value.arg(arg.integerValue())).asReturnedValue(); else if (arg.isDouble()) |