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/particles/qquickv4particledata.cpp | |
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/particles/qquickv4particledata.cpp')
-rw-r--r-- | src/particles/qquickv4particledata.cpp | 35 |
1 files changed, 20 insertions, 15 deletions
diff --git a/src/particles/qquickv4particledata.cpp b/src/particles/qquickv4particledata.cpp index 71ca4d31d0..ac19e025f6 100644 --- a/src/particles/qquickv4particledata.cpp +++ b/src/particles/qquickv4particledata.cpp @@ -300,7 +300,8 @@ public: static QV4::ReturnedValue particleData_discard(QV4::SimpleCallContext *ctx) { - QV4ParticleData *r = ctx->thisObject.as<QV4ParticleData>(); + QV4::Scope scope(ctx); + QV4::Scoped<QV4ParticleData> r(scope, ctx->callData->thisObject); if (!r || !r->datum) ctx->throwError(QStringLiteral("Not a valid ParticleData object")); @@ -311,7 +312,9 @@ static QV4::ReturnedValue particleData_discard(QV4::SimpleCallContext *ctx) static QV4::ReturnedValue particleData_lifeLeft(QV4::SimpleCallContext *ctx) { - QV4ParticleData *r = ctx->thisObject.as<QV4ParticleData>(); + QV4::Scope scope(ctx); + QV4::Scoped<QV4ParticleData> r(scope, ctx->callData->thisObject); + if (!r || !r->datum) ctx->throwError(QStringLiteral("Not a valid ParticleData object")); @@ -320,7 +323,9 @@ static QV4::ReturnedValue particleData_lifeLeft(QV4::SimpleCallContext *ctx) static QV4::ReturnedValue particleData_curSize(QV4::SimpleCallContext *ctx) { - QV4ParticleData *r = ctx->thisObject.as<QV4ParticleData>(); + QV4::Scope scope(ctx); + QV4::Scoped<QV4ParticleData> r(scope, ctx->callData->thisObject); + if (!r || !r->datum) ctx->throwError(QStringLiteral("Not a valid ParticleData object")); @@ -329,7 +334,7 @@ static QV4::ReturnedValue particleData_curSize(QV4::SimpleCallContext *ctx) #define COLOR_GETTER_AND_SETTER(VAR, NAME) static QV4::ReturnedValue particleData_get_ ## NAME (QV4::SimpleCallContext *ctx) \ { \ QV4::Scope scope(ctx); \ - QV4::Scoped<QV4ParticleData> r(scope, ctx->thisObject); \ + QV4::Scoped<QV4ParticleData> r(scope, ctx->callData->thisObject); \ if (!r || !r->datum) \ ctx->throwError(QStringLiteral("Not a valid ParticleData object")); \ \ @@ -339,11 +344,11 @@ static QV4::ReturnedValue particleData_curSize(QV4::SimpleCallContext *ctx) static QV4::ReturnedValue particleData_set_ ## NAME (QV4::SimpleCallContext *ctx)\ {\ QV4::Scope scope(ctx); \ - QV4::Scoped<QV4ParticleData> r(scope, ctx->thisObject); \ + QV4::Scoped<QV4ParticleData> r(scope, ctx->callData->thisObject); \ if (!r || !r->datum)\ ctx->throwError(QStringLiteral("Not a valid ParticleData object"));\ \ - double d = ctx->argumentCount ? ctx->arguments[0].toNumber() : 0; \ + double d = ctx->callData->argc ? ctx->callData->args[0].toNumber() : 0; \ r->datum->color. VAR = qMin(255, qMax(0, (int)floor(d * 255.0)));\ return QV4::Encode::undefined(); \ } @@ -352,7 +357,7 @@ static QV4::ReturnedValue particleData_set_ ## NAME (QV4::SimpleCallContext *ctx #define SEMIBOOL_GETTER_AND_SETTER(VARIABLE) static QV4::ReturnedValue particleData_get_ ## VARIABLE (QV4::SimpleCallContext *ctx) \ { \ QV4::Scope scope(ctx); \ - QV4::Scoped<QV4ParticleData> r(scope, ctx->thisObject); \ + QV4::Scoped<QV4ParticleData> r(scope, ctx->callData->thisObject); \ if (!r || !r->datum) \ ctx->throwError(QStringLiteral("Not a valid ParticleData object")); \ \ @@ -362,18 +367,18 @@ static QV4::ReturnedValue particleData_set_ ## NAME (QV4::SimpleCallContext *ctx static QV4::ReturnedValue particleData_set_ ## VARIABLE (QV4::SimpleCallContext *ctx)\ {\ QV4::Scope scope(ctx); \ - QV4::Scoped<QV4ParticleData> r(scope, ctx->thisObject); \ + QV4::Scoped<QV4ParticleData> r(scope, ctx->callData->thisObject); \ if (!r || !r->datum)\ ctx->throwError(QStringLiteral("Not a valid ParticleData object"));\ \ - r->datum-> VARIABLE = (ctx->argumentCount && ctx->arguments[0].toBoolean()) ? 1.0 : 0.0;\ + r->datum-> VARIABLE = (ctx->callData->argc && ctx->callData->args[0].toBoolean()) ? 1.0 : 0.0;\ return QV4::Encode::undefined(); \ } #define FLOAT_GETTER_AND_SETTER(VARIABLE) static QV4::ReturnedValue particleData_get_ ## VARIABLE (QV4::SimpleCallContext *ctx) \ { \ QV4::Scope scope(ctx); \ - QV4::Scoped<QV4ParticleData> r(scope, ctx->thisObject); \ + QV4::Scoped<QV4ParticleData> r(scope, ctx->callData->thisObject); \ if (!r || !r->datum) \ ctx->throwError(QStringLiteral("Not a valid ParticleData object")); \ \ @@ -383,18 +388,18 @@ static QV4::ReturnedValue particleData_set_ ## VARIABLE (QV4::SimpleCallContext static QV4::ReturnedValue particleData_set_ ## VARIABLE (QV4::SimpleCallContext *ctx)\ {\ QV4::Scope scope(ctx); \ - QV4::Scoped<QV4ParticleData> r(scope, ctx->thisObject); \ + QV4::Scoped<QV4ParticleData> r(scope, ctx->callData->thisObject); \ if (!r || !r->datum)\ ctx->throwError(QStringLiteral("Not a valid ParticleData object"));\ \ - r->datum-> VARIABLE = ctx->argumentCount ? ctx->arguments[0].toNumber() : qSNaN();\ + r->datum-> VARIABLE = ctx->callData->argc ? ctx->callData->args[0].toNumber() : qSNaN();\ return QV4::Encode::undefined(); \ } #define FAKE_FLOAT_GETTER_AND_SETTER(VARIABLE, GETTER, SETTER) static QV4::ReturnedValue particleData_get_ ## VARIABLE (QV4::SimpleCallContext *ctx) \ { \ QV4::Scope scope(ctx); \ - QV4::Scoped<QV4ParticleData> r(scope, ctx->thisObject); \ + QV4::Scoped<QV4ParticleData> r(scope, ctx->callData->thisObject); \ if (!r || !r->datum) \ ctx->throwError(QStringLiteral("Not a valid ParticleData object")); \ \ @@ -404,11 +409,11 @@ static QV4::ReturnedValue particleData_set_ ## VARIABLE (QV4::SimpleCallContext static QV4::ReturnedValue particleData_set_ ## VARIABLE (QV4::SimpleCallContext *ctx)\ {\ QV4::Scope scope(ctx); \ - QV4::Scoped<QV4ParticleData> r(scope, ctx->thisObject); \ + QV4::Scoped<QV4ParticleData> r(scope, ctx->callData->thisObject); \ if (!r || !r->datum)\ ctx->throwError(QStringLiteral("Not a valid ParticleData object"));\ \ - r->datum-> SETTER (ctx->argumentCount ? ctx->arguments[0].toNumber() : qSNaN());\ + r->datum-> SETTER (ctx->callData->argc ? ctx->callData->args[0].toNumber() : qSNaN());\ return QV4::Encode::undefined(); \ } |