diff options
author | Lars Knoll <lars.knoll@digia.com> | 2013-11-03 15:23:05 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-11-09 02:01:17 +0100 |
commit | 412eb94de4cae754130ae855236420ebd5c42482 (patch) | |
tree | 901af6051691c65a96abe3f69fcd3d5fc57ff80a /src/qml/jsruntime | |
parent | e367f75d7285d2bcd10cbb35d088c96f33c02aff (diff) |
Simplify & speed up function calling
Get rid of the SimpleCallContext, instead simply
use the CallContext data structure, but don't
initialize the unused variables.
Change-Id: I11b311986da180c62c815b516a2c55844156d0ab
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/jsruntime')
41 files changed, 456 insertions, 461 deletions
diff --git a/src/qml/jsruntime/qv4arrayobject.cpp b/src/qml/jsruntime/qv4arrayobject.cpp index 85423a4118..5422bff800 100644 --- a/src/qml/jsruntime/qv4arrayobject.cpp +++ b/src/qml/jsruntime/qv4arrayobject.cpp @@ -131,13 +131,13 @@ uint ArrayPrototype::getLength(ExecutionContext *ctx, ObjectRef o) return v->toUInt32(); } -ReturnedValue ArrayPrototype::method_isArray(SimpleCallContext *ctx) +ReturnedValue ArrayPrototype::method_isArray(CallContext *ctx) { bool isArray = ctx->callData->argc && ctx->callData->args[0].asArrayObject(); return Encode(isArray); } -ReturnedValue ArrayPrototype::method_toString(SimpleCallContext *ctx) +ReturnedValue ArrayPrototype::method_toString(CallContext *ctx) { Scope scope(ctx); ScopedObject o(scope, ctx->callData->thisObject, ScopedObject::Convert); @@ -153,12 +153,12 @@ ReturnedValue ArrayPrototype::method_toString(SimpleCallContext *ctx) return ObjectPrototype::method_toString(ctx); } -ReturnedValue ArrayPrototype::method_toLocaleString(SimpleCallContext *ctx) +ReturnedValue ArrayPrototype::method_toLocaleString(CallContext *ctx) { return method_toString(ctx); } -ReturnedValue ArrayPrototype::method_concat(SimpleCallContext *ctx) +ReturnedValue ArrayPrototype::method_concat(CallContext *ctx) { Scope scope(ctx); ScopedObject result(scope, ctx->engine->newArrayObject()); @@ -185,7 +185,7 @@ ReturnedValue ArrayPrototype::method_concat(SimpleCallContext *ctx) return result.asReturnedValue(); } -ReturnedValue ArrayPrototype::method_join(SimpleCallContext *ctx) +ReturnedValue ArrayPrototype::method_join(CallContext *ctx) { Scope scope(ctx); ScopedValue arg(scope, ctx->argument(0)); @@ -244,7 +244,7 @@ ReturnedValue ArrayPrototype::method_join(SimpleCallContext *ctx) return ctx->engine->newString(R)->asReturnedValue(); } -ReturnedValue ArrayPrototype::method_pop(SimpleCallContext *ctx) +ReturnedValue ArrayPrototype::method_pop(CallContext *ctx) { Scope scope(ctx); ScopedObject instance(scope, ctx->callData->thisObject.toObject(ctx)); @@ -272,7 +272,7 @@ ReturnedValue ArrayPrototype::method_pop(SimpleCallContext *ctx) return result.asReturnedValue(); } -ReturnedValue ArrayPrototype::method_push(SimpleCallContext *ctx) +ReturnedValue ArrayPrototype::method_push(CallContext *ctx) { Scope scope(ctx); ScopedObject instance(scope, ctx->callData->thisObject.toObject(ctx)); @@ -326,7 +326,7 @@ ReturnedValue ArrayPrototype::method_push(SimpleCallContext *ctx) return Encode(len); } -ReturnedValue ArrayPrototype::method_reverse(SimpleCallContext *ctx) +ReturnedValue ArrayPrototype::method_reverse(CallContext *ctx) { Scope scope(ctx); ScopedObject instance(scope, ctx->callData->thisObject.toObject(ctx)); @@ -358,7 +358,7 @@ ReturnedValue ArrayPrototype::method_reverse(SimpleCallContext *ctx) return instance.asReturnedValue(); } -ReturnedValue ArrayPrototype::method_shift(SimpleCallContext *ctx) +ReturnedValue ArrayPrototype::method_shift(CallContext *ctx) { Scope scope(ctx); ScopedObject instance(scope, ctx->callData->thisObject.toObject(ctx)); @@ -418,7 +418,7 @@ ReturnedValue ArrayPrototype::method_shift(SimpleCallContext *ctx) return result.asReturnedValue(); } -ReturnedValue ArrayPrototype::method_slice(SimpleCallContext *ctx) +ReturnedValue ArrayPrototype::method_slice(CallContext *ctx) { Scope scope(ctx); ScopedObject o(scope, ctx->callData->thisObject.toObject(ctx)); @@ -460,7 +460,7 @@ ReturnedValue ArrayPrototype::method_slice(SimpleCallContext *ctx) return result.asReturnedValue(); } -ReturnedValue ArrayPrototype::method_sort(SimpleCallContext *ctx) +ReturnedValue ArrayPrototype::method_sort(CallContext *ctx) { Scope scope(ctx); Scoped<Object> instance(scope, ctx->callData->thisObject.toObject(ctx)); @@ -474,7 +474,7 @@ ReturnedValue ArrayPrototype::method_sort(SimpleCallContext *ctx) return ctx->callData->thisObject.asReturnedValue(); } -ReturnedValue ArrayPrototype::method_splice(SimpleCallContext *ctx) +ReturnedValue ArrayPrototype::method_splice(CallContext *ctx) { Scope scope(ctx); ScopedObject instance(scope, ctx->callData->thisObject.toObject(ctx)); @@ -552,7 +552,7 @@ ReturnedValue ArrayPrototype::method_splice(SimpleCallContext *ctx) return newArray.asReturnedValue(); } -ReturnedValue ArrayPrototype::method_unshift(SimpleCallContext *ctx) +ReturnedValue ArrayPrototype::method_unshift(CallContext *ctx) { Scope scope(ctx); ScopedObject instance(scope, ctx->callData->thisObject.toObject(ctx)); @@ -604,7 +604,7 @@ ReturnedValue ArrayPrototype::method_unshift(SimpleCallContext *ctx) return Encode(newLen); } -ReturnedValue ArrayPrototype::method_indexOf(SimpleCallContext *ctx) +ReturnedValue ArrayPrototype::method_indexOf(CallContext *ctx) { Scope scope(ctx); @@ -643,7 +643,7 @@ ReturnedValue ArrayPrototype::method_indexOf(SimpleCallContext *ctx) return instance->arrayIndexOf(searchValue, fromIndex, len, ctx, instance.getPointer()); } -ReturnedValue ArrayPrototype::method_lastIndexOf(SimpleCallContext *ctx) +ReturnedValue ArrayPrototype::method_lastIndexOf(CallContext *ctx) { Scope scope(ctx); @@ -689,7 +689,7 @@ ReturnedValue ArrayPrototype::method_lastIndexOf(SimpleCallContext *ctx) return Encode(-1); } -ReturnedValue ArrayPrototype::method_every(SimpleCallContext *ctx) +ReturnedValue ArrayPrototype::method_every(CallContext *ctx) { Scope scope(ctx); Scoped<Object> instance(scope, ctx->callData->thisObject.toObject(ctx)); @@ -723,7 +723,7 @@ ReturnedValue ArrayPrototype::method_every(SimpleCallContext *ctx) return Encode(ok); } -ReturnedValue ArrayPrototype::method_some(SimpleCallContext *ctx) +ReturnedValue ArrayPrototype::method_some(CallContext *ctx) { Scope scope(ctx); Scoped<Object> instance(scope, ctx->callData->thisObject.toObject(ctx)); @@ -757,7 +757,7 @@ ReturnedValue ArrayPrototype::method_some(SimpleCallContext *ctx) return Encode(false); } -ReturnedValue ArrayPrototype::method_forEach(SimpleCallContext *ctx) +ReturnedValue ArrayPrototype::method_forEach(CallContext *ctx) { Scope scope(ctx); Scoped<Object> instance(scope, ctx->callData->thisObject.toObject(ctx)); @@ -788,7 +788,7 @@ ReturnedValue ArrayPrototype::method_forEach(SimpleCallContext *ctx) return Encode::undefined(); } -ReturnedValue ArrayPrototype::method_map(SimpleCallContext *ctx) +ReturnedValue ArrayPrototype::method_map(CallContext *ctx) { Scope scope(ctx); Scoped<Object> instance(scope, ctx->callData->thisObject.toObject(ctx)); @@ -825,7 +825,7 @@ ReturnedValue ArrayPrototype::method_map(SimpleCallContext *ctx) return a.asReturnedValue(); } -ReturnedValue ArrayPrototype::method_filter(SimpleCallContext *ctx) +ReturnedValue ArrayPrototype::method_filter(CallContext *ctx) { Scope scope(ctx); Scoped<Object> instance(scope, ctx->callData->thisObject.toObject(ctx)); @@ -866,7 +866,7 @@ ReturnedValue ArrayPrototype::method_filter(SimpleCallContext *ctx) return a.asReturnedValue(); } -ReturnedValue ArrayPrototype::method_reduce(SimpleCallContext *ctx) +ReturnedValue ArrayPrototype::method_reduce(CallContext *ctx) { Scope scope(ctx); Scoped<Object> instance(scope, ctx->callData->thisObject.toObject(ctx)); @@ -916,7 +916,7 @@ ReturnedValue ArrayPrototype::method_reduce(SimpleCallContext *ctx) return acc.asReturnedValue(); } -ReturnedValue ArrayPrototype::method_reduceRight(SimpleCallContext *ctx) +ReturnedValue ArrayPrototype::method_reduceRight(CallContext *ctx) { Scope scope(ctx); Scoped<Object> instance(scope, ctx->callData->thisObject.toObject(ctx)); diff --git a/src/qml/jsruntime/qv4arrayobject_p.h b/src/qml/jsruntime/qv4arrayobject_p.h index 933939e279..7e809f9064 100644 --- a/src/qml/jsruntime/qv4arrayobject_p.h +++ b/src/qml/jsruntime/qv4arrayobject_p.h @@ -66,28 +66,28 @@ struct ArrayPrototype: ArrayObject static uint getLength(ExecutionContext *ctx, ObjectRef o); - static ReturnedValue method_isArray(SimpleCallContext *ctx); - static ReturnedValue method_toString(SimpleCallContext *ctx); - static ReturnedValue method_toLocaleString(SimpleCallContext *ctx); - static ReturnedValue method_concat(SimpleCallContext *ctx); - static ReturnedValue method_join(SimpleCallContext *ctx); - static ReturnedValue method_pop(SimpleCallContext *ctx); - static ReturnedValue method_push(SimpleCallContext *ctx); - static ReturnedValue method_reverse(SimpleCallContext *ctx); - static ReturnedValue method_shift(SimpleCallContext *ctx); - static ReturnedValue method_slice(SimpleCallContext *ctx); - static ReturnedValue method_sort(SimpleCallContext *ctx); - static ReturnedValue method_splice(SimpleCallContext *ctx); - static ReturnedValue method_unshift(SimpleCallContext *ctx); - static ReturnedValue method_indexOf(SimpleCallContext *ctx); - static ReturnedValue method_lastIndexOf(SimpleCallContext *ctx); - static ReturnedValue method_every(SimpleCallContext *ctx); - static ReturnedValue method_some(SimpleCallContext *ctx); - static ReturnedValue method_forEach(SimpleCallContext *ctx); - static ReturnedValue method_map(SimpleCallContext *ctx); - static ReturnedValue method_filter(SimpleCallContext *ctx); - static ReturnedValue method_reduce(SimpleCallContext *ctx); - static ReturnedValue method_reduceRight(SimpleCallContext *ctx); + static ReturnedValue method_isArray(CallContext *ctx); + static ReturnedValue method_toString(CallContext *ctx); + static ReturnedValue method_toLocaleString(CallContext *ctx); + static ReturnedValue method_concat(CallContext *ctx); + static ReturnedValue method_join(CallContext *ctx); + static ReturnedValue method_pop(CallContext *ctx); + static ReturnedValue method_push(CallContext *ctx); + static ReturnedValue method_reverse(CallContext *ctx); + static ReturnedValue method_shift(CallContext *ctx); + static ReturnedValue method_slice(CallContext *ctx); + static ReturnedValue method_sort(CallContext *ctx); + static ReturnedValue method_splice(CallContext *ctx); + static ReturnedValue method_unshift(CallContext *ctx); + static ReturnedValue method_indexOf(CallContext *ctx); + static ReturnedValue method_lastIndexOf(CallContext *ctx); + static ReturnedValue method_every(CallContext *ctx); + static ReturnedValue method_some(CallContext *ctx); + static ReturnedValue method_forEach(CallContext *ctx); + static ReturnedValue method_map(CallContext *ctx); + static ReturnedValue method_filter(CallContext *ctx); + static ReturnedValue method_reduce(CallContext *ctx); + static ReturnedValue method_reduceRight(CallContext *ctx); }; diff --git a/src/qml/jsruntime/qv4booleanobject.cpp b/src/qml/jsruntime/qv4booleanobject.cpp index d9de6d9fba..a0d0027e5f 100644 --- a/src/qml/jsruntime/qv4booleanobject.cpp +++ b/src/qml/jsruntime/qv4booleanobject.cpp @@ -77,7 +77,7 @@ void BooleanPrototype::init(ExecutionEngine *engine, ObjectRef ctor) defineDefaultProperty(engine->id_valueOf, method_valueOf); } -ReturnedValue BooleanPrototype::method_toString(SimpleCallContext *ctx) +ReturnedValue BooleanPrototype::method_toString(CallContext *ctx) { bool result; if (ctx->callData->thisObject.isBoolean()) { @@ -93,7 +93,7 @@ ReturnedValue BooleanPrototype::method_toString(SimpleCallContext *ctx) return Encode(ctx->engine->newString(QLatin1String(result ? "true" : "false"))); } -ReturnedValue BooleanPrototype::method_valueOf(SimpleCallContext *ctx) +ReturnedValue BooleanPrototype::method_valueOf(CallContext *ctx) { if (ctx->callData->thisObject.isBoolean()) return ctx->callData->thisObject.asReturnedValue(); diff --git a/src/qml/jsruntime/qv4booleanobject_p.h b/src/qml/jsruntime/qv4booleanobject_p.h index 6766fae830..56c00f99ed 100644 --- a/src/qml/jsruntime/qv4booleanobject_p.h +++ b/src/qml/jsruntime/qv4booleanobject_p.h @@ -63,8 +63,8 @@ struct BooleanPrototype: BooleanObject BooleanPrototype(InternalClass *ic): BooleanObject(ic) {} void init(ExecutionEngine *engine, ObjectRef ctor); - static ReturnedValue method_toString(SimpleCallContext *ctx); - static ReturnedValue method_valueOf(SimpleCallContext *ctx); + static ReturnedValue method_toString(CallContext *ctx); + static ReturnedValue method_valueOf(CallContext *ctx); }; diff --git a/src/qml/jsruntime/qv4context.cpp b/src/qml/jsruntime/qv4context.cpp index 07a5f90136..18b0de3077 100644 --- a/src/qml/jsruntime/qv4context.cpp +++ b/src/qml/jsruntime/qv4context.cpp @@ -51,47 +51,6 @@ using namespace QV4; -CallContext *ExecutionContext::newCallContext(void *stackSpace, SafeValue *locals, FunctionObject *function, CallData *callData) -{ - CallContext *c = (CallContext *)stackSpace; -#ifndef QT_NO_DEBUG - c->next = (CallContext *)0x1; -#endif - - engine->current = c; - - c->initBaseContext(Type_CallContext, engine, this); - - c->function = function; - c->callData = callData; - - c->strictMode = function->strictMode; - c->marked = false; - c->outer = function->scope; -#ifndef QT_NO_DEBUG - assert(c->outer->next != (ExecutionContext *)0x1); -#endif - - c->activation = 0; - - if (function->function) { - c->compilationUnit = function->function->compilationUnit; - c->lookups = c->compilationUnit->runtimeLookups; - } - - c->locals = locals; - - if (callData->argc < static_cast<int>(function->formalParameterCount)) { -#ifndef QT_NO_DEBUG - Q_ASSERT(function->formalParameterCount <= QV4::Global::ReservedArgumentCount); -#endif - std::fill(c->callData->args + callData->argc, c->callData->args + function->formalParameterCount, Primitive::undefinedValue()); - c->callData->argc = function->formalParameterCount; - } - - return c; -} - CallContext *ExecutionContext::newCallContext(FunctionObject *function, CallData *callData) { CallContext *c = static_cast<CallContext *>(engine->memoryManager->allocContext(requiredMemoryForExecutionContect(function, callData->argc))); @@ -187,22 +146,34 @@ void ExecutionContext::createMutableBinding(const StringRef name, bool deletable String * const *ExecutionContext::formals() const { - return type >= Type_CallContext ? static_cast<const CallContext *>(this)->function->formalParameterList : 0; + if (type < Type_SimpleCallContext) + return 0; + QV4::FunctionObject *f = static_cast<const CallContext *>(this)->function; + return f ? f->formalParameterList : 0; } unsigned int ExecutionContext::formalCount() const { - return type >= Type_CallContext ? static_cast<const CallContext *>(this)->function->formalParameterCount : 0; + if (type < Type_SimpleCallContext) + return 0; + QV4::FunctionObject *f = static_cast<const CallContext *>(this)->function; + return f ? f->formalParameterCount : 0; } String * const *ExecutionContext::variables() const { - return type >= Type_CallContext ? static_cast<const CallContext *>(this)->function->varList : 0; + if (type < Type_SimpleCallContext) + return 0; + QV4::FunctionObject *f = static_cast<const CallContext *>(this)->function; + return f ? f->varList : 0; } unsigned int ExecutionContext::variableCount() const { - return type >= Type_CallContext ? static_cast<const CallContext *>(this)->function->varCount : 0; + if (type < Type_SimpleCallContext) + return 0; + QV4::FunctionObject *f = static_cast<const CallContext *>(this)->function; + return f ? f->varCount : 0; } @@ -320,9 +291,10 @@ void ExecutionContext::mark() return; marked = true; - if (type != Type_SimpleCallContext && outer) + if (outer) outer->mark(); + // ### shouldn't need these 3 lines callData->thisObject.mark(engine); for (int arg = 0; arg < callData->argc; ++arg) callData->args[arg].mark(engine); @@ -613,9 +585,3 @@ ReturnedValue ExecutionContext::throwURIError(const ValueRef msg) ScopedObject error(scope, engine->newURIErrorObject(msg)); return throwError(error); } - -void SimpleCallContext::initSimpleCallContext(ExecutionEngine *engine) -{ - initBaseContext(Type_SimpleCallContext, engine, engine->current); - function = 0; -} diff --git a/src/qml/jsruntime/qv4context_p.h b/src/qml/jsruntime/qv4context_p.h index de5b8f9530..9a7b9a61b2 100644 --- a/src/qml/jsruntime/qv4context_p.h +++ b/src/qml/jsruntime/qv4context_p.h @@ -62,6 +62,7 @@ struct Function; }; struct CallContext; +struct CallContext; struct CatchContext; struct WithContext; @@ -114,7 +115,6 @@ struct Q_QML_EXPORT ExecutionContext jitInstructionPointer = 0; } - CallContext *newCallContext(void *stackSpace, SafeValue *locals, FunctionObject *f, CallData *callData); CallContext *newCallContext(FunctionObject *f, CallData *callData); WithContext *newWithContext(ObjectRef with); CatchContext *newCatchContext(const StringRef exceptionVarName, const ValueRef exceptionValue); @@ -153,22 +153,23 @@ struct Q_QML_EXPORT ExecutionContext inline const CallContext *asCallContext() const; }; -struct SimpleCallContext : public ExecutionContext +struct CallContext : public ExecutionContext { - void initSimpleCallContext(ExecutionEngine *engine); FunctionObject *function; int realArgumentCount; + SafeValue *locals; + Object *activation; - inline ReturnedValue argument(int i); -}; - -struct CallContext : public SimpleCallContext -{ + void initSimpleCallContext(ExecutionEngine *engine, ExecutionContext *parent) { + initBaseContext(Type_SimpleCallContext, engine, parent); + function = 0; + locals = 0; + activation = 0; + } void initQmlContext(ExecutionContext *parentContext, ObjectRef qml, QV4::FunctionObject *function); - bool needsOwnArguments() const; - SafeValue *locals; - Object *activation; + inline ReturnedValue argument(int i); + bool needsOwnArguments() const; }; struct GlobalContext : public ExecutionContext @@ -195,19 +196,17 @@ struct WithContext : public ExecutionContext inline CallContext *ExecutionContext::asCallContext() { - return type >= Type_CallContext ? static_cast<CallContext *>(this) : 0; + return type >= Type_SimpleCallContext ? static_cast<CallContext *>(this) : 0; } inline const CallContext *ExecutionContext::asCallContext() const { - return type >= Type_CallContext ? static_cast<const CallContext *>(this) : 0; + return type >= Type_SimpleCallContext ? static_cast<const CallContext *>(this) : 0; } /* Function *f, int argc */ #define requiredMemoryForExecutionContect(f, argc) \ sizeof(CallContext) + sizeof(Value) * (f->varCount + qMax((uint)argc, f->formalParameterCount)) + sizeof(CallData) -#define requiredMemoryForExecutionContectSimple(f) \ - sizeof(CallContext) } // namespace QV4 diff --git a/src/qml/jsruntime/qv4dateobject.cpp b/src/qml/jsruntime/qv4dateobject.cpp index aee4917842..b732c8a04a 100644 --- a/src/qml/jsruntime/qv4dateobject.cpp +++ b/src/qml/jsruntime/qv4dateobject.cpp @@ -779,14 +779,14 @@ double DatePrototype::getThisDate(ExecutionContext *ctx) } } -ReturnedValue DatePrototype::method_parse(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_parse(CallContext *ctx) { if (!ctx->callData->argc) return Encode(qSNaN()); return Encode(ParseString(ctx->callData->args[0].toString(ctx)->toQString())); } -ReturnedValue DatePrototype::method_UTC(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_UTC(CallContext *ctx) { const int numArgs = ctx->callData->argc; if (numArgs >= 2) { @@ -806,62 +806,62 @@ ReturnedValue DatePrototype::method_UTC(SimpleCallContext *ctx) return Encode::undefined(); } -ReturnedValue DatePrototype::method_now(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_now(CallContext *ctx) { Q_UNUSED(ctx); double t = currentTime(); return Encode(t); } -ReturnedValue DatePrototype::method_toString(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_toString(CallContext *ctx) { double t = getThisDate(ctx); return ctx->engine->newString(ToString(t))->asReturnedValue(); } -ReturnedValue DatePrototype::method_toDateString(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_toDateString(CallContext *ctx) { double t = getThisDate(ctx); return ctx->engine->newString(ToDateString(t))->asReturnedValue(); } -ReturnedValue DatePrototype::method_toTimeString(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_toTimeString(CallContext *ctx) { double t = getThisDate(ctx); return ctx->engine->newString(ToTimeString(t))->asReturnedValue(); } -ReturnedValue DatePrototype::method_toLocaleString(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_toLocaleString(CallContext *ctx) { double t = getThisDate(ctx); return ctx->engine->newString(ToLocaleString(t))->asReturnedValue(); } -ReturnedValue DatePrototype::method_toLocaleDateString(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_toLocaleDateString(CallContext *ctx) { double t = getThisDate(ctx); return ctx->engine->newString(ToLocaleDateString(t))->asReturnedValue(); } -ReturnedValue DatePrototype::method_toLocaleTimeString(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_toLocaleTimeString(CallContext *ctx) { double t = getThisDate(ctx); return ctx->engine->newString(ToLocaleTimeString(t))->asReturnedValue(); } -ReturnedValue DatePrototype::method_valueOf(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_valueOf(CallContext *ctx) { double t = getThisDate(ctx); return Encode(t); } -ReturnedValue DatePrototype::method_getTime(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_getTime(CallContext *ctx) { double t = getThisDate(ctx); return Encode(t); } -ReturnedValue DatePrototype::method_getYear(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_getYear(CallContext *ctx) { double t = getThisDate(ctx); if (! std::isnan(t)) @@ -869,7 +869,7 @@ ReturnedValue DatePrototype::method_getYear(SimpleCallContext *ctx) return Encode(t); } -ReturnedValue DatePrototype::method_getFullYear(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_getFullYear(CallContext *ctx) { double t = getThisDate(ctx); if (! std::isnan(t)) @@ -877,7 +877,7 @@ ReturnedValue DatePrototype::method_getFullYear(SimpleCallContext *ctx) return Encode(t); } -ReturnedValue DatePrototype::method_getUTCFullYear(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_getUTCFullYear(CallContext *ctx) { double t = getThisDate(ctx); if (! std::isnan(t)) @@ -885,7 +885,7 @@ ReturnedValue DatePrototype::method_getUTCFullYear(SimpleCallContext *ctx) return Encode(t); } -ReturnedValue DatePrototype::method_getMonth(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_getMonth(CallContext *ctx) { double t = getThisDate(ctx); if (! std::isnan(t)) @@ -893,7 +893,7 @@ ReturnedValue DatePrototype::method_getMonth(SimpleCallContext *ctx) return Encode(t); } -ReturnedValue DatePrototype::method_getUTCMonth(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_getUTCMonth(CallContext *ctx) { double t = getThisDate(ctx); if (! std::isnan(t)) @@ -901,7 +901,7 @@ ReturnedValue DatePrototype::method_getUTCMonth(SimpleCallContext *ctx) return Encode(t); } -ReturnedValue DatePrototype::method_getDate(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_getDate(CallContext *ctx) { double t = getThisDate(ctx); if (! std::isnan(t)) @@ -909,7 +909,7 @@ ReturnedValue DatePrototype::method_getDate(SimpleCallContext *ctx) return Encode(t); } -ReturnedValue DatePrototype::method_getUTCDate(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_getUTCDate(CallContext *ctx) { double t = getThisDate(ctx); if (! std::isnan(t)) @@ -917,7 +917,7 @@ ReturnedValue DatePrototype::method_getUTCDate(SimpleCallContext *ctx) return Encode(t); } -ReturnedValue DatePrototype::method_getDay(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_getDay(CallContext *ctx) { double t = getThisDate(ctx); if (! std::isnan(t)) @@ -925,7 +925,7 @@ ReturnedValue DatePrototype::method_getDay(SimpleCallContext *ctx) return Encode(t); } -ReturnedValue DatePrototype::method_getUTCDay(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_getUTCDay(CallContext *ctx) { double t = getThisDate(ctx); if (! std::isnan(t)) @@ -933,7 +933,7 @@ ReturnedValue DatePrototype::method_getUTCDay(SimpleCallContext *ctx) return Encode(t); } -ReturnedValue DatePrototype::method_getHours(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_getHours(CallContext *ctx) { double t = getThisDate(ctx); if (! std::isnan(t)) @@ -941,7 +941,7 @@ ReturnedValue DatePrototype::method_getHours(SimpleCallContext *ctx) return Encode(t); } -ReturnedValue DatePrototype::method_getUTCHours(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_getUTCHours(CallContext *ctx) { double t = getThisDate(ctx); if (! std::isnan(t)) @@ -949,7 +949,7 @@ ReturnedValue DatePrototype::method_getUTCHours(SimpleCallContext *ctx) return Encode(t); } -ReturnedValue DatePrototype::method_getMinutes(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_getMinutes(CallContext *ctx) { double t = getThisDate(ctx); if (! std::isnan(t)) @@ -957,7 +957,7 @@ ReturnedValue DatePrototype::method_getMinutes(SimpleCallContext *ctx) return Encode(t); } -ReturnedValue DatePrototype::method_getUTCMinutes(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_getUTCMinutes(CallContext *ctx) { double t = getThisDate(ctx); if (! std::isnan(t)) @@ -965,7 +965,7 @@ ReturnedValue DatePrototype::method_getUTCMinutes(SimpleCallContext *ctx) return Encode(t); } -ReturnedValue DatePrototype::method_getSeconds(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_getSeconds(CallContext *ctx) { double t = getThisDate(ctx); if (! std::isnan(t)) @@ -973,7 +973,7 @@ ReturnedValue DatePrototype::method_getSeconds(SimpleCallContext *ctx) return Encode(t); } -ReturnedValue DatePrototype::method_getUTCSeconds(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_getUTCSeconds(CallContext *ctx) { double t = getThisDate(ctx); if (! std::isnan(t)) @@ -981,7 +981,7 @@ ReturnedValue DatePrototype::method_getUTCSeconds(SimpleCallContext *ctx) return Encode(t); } -ReturnedValue DatePrototype::method_getMilliseconds(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_getMilliseconds(CallContext *ctx) { double t = getThisDate(ctx); if (! std::isnan(t)) @@ -989,7 +989,7 @@ ReturnedValue DatePrototype::method_getMilliseconds(SimpleCallContext *ctx) return Encode(t); } -ReturnedValue DatePrototype::method_getUTCMilliseconds(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_getUTCMilliseconds(CallContext *ctx) { double t = getThisDate(ctx); if (! std::isnan(t)) @@ -997,7 +997,7 @@ ReturnedValue DatePrototype::method_getUTCMilliseconds(SimpleCallContext *ctx) return Encode(t); } -ReturnedValue DatePrototype::method_getTimezoneOffset(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_getTimezoneOffset(CallContext *ctx) { double t = getThisDate(ctx); if (! std::isnan(t)) @@ -1005,7 +1005,7 @@ ReturnedValue DatePrototype::method_getTimezoneOffset(SimpleCallContext *ctx) return Encode(t); } -ReturnedValue DatePrototype::method_setTime(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_setTime(CallContext *ctx) { Scope scope(ctx); Scoped<DateObject> self(scope, ctx->callData->thisObject); @@ -1017,7 +1017,7 @@ ReturnedValue DatePrototype::method_setTime(SimpleCallContext *ctx) return self->value.asReturnedValue(); } -ReturnedValue DatePrototype::method_setMilliseconds(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_setMilliseconds(CallContext *ctx) { Scope scope(ctx); Scoped<DateObject> self(scope, ctx->callData->thisObject); @@ -1030,7 +1030,7 @@ ReturnedValue DatePrototype::method_setMilliseconds(SimpleCallContext *ctx) return self->value.asReturnedValue(); } -ReturnedValue DatePrototype::method_setUTCMilliseconds(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_setUTCMilliseconds(CallContext *ctx) { DateObject *self = ctx->callData->thisObject.asDateObject(); if (!self) @@ -1042,7 +1042,7 @@ ReturnedValue DatePrototype::method_setUTCMilliseconds(SimpleCallContext *ctx) return self->value.asReturnedValue(); } -ReturnedValue DatePrototype::method_setSeconds(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_setSeconds(CallContext *ctx) { DateObject *self = ctx->callData->thisObject.asDateObject(); if (!self) @@ -1056,7 +1056,7 @@ ReturnedValue DatePrototype::method_setSeconds(SimpleCallContext *ctx) return self->value.asReturnedValue(); } -ReturnedValue DatePrototype::method_setUTCSeconds(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_setUTCSeconds(CallContext *ctx) { DateObject *self = ctx->callData->thisObject.asDateObject(); if (!self) @@ -1070,7 +1070,7 @@ ReturnedValue DatePrototype::method_setUTCSeconds(SimpleCallContext *ctx) return self->value.asReturnedValue(); } -ReturnedValue DatePrototype::method_setMinutes(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_setMinutes(CallContext *ctx) { DateObject *self = ctx->callData->thisObject.asDateObject(); if (!self) @@ -1085,7 +1085,7 @@ ReturnedValue DatePrototype::method_setMinutes(SimpleCallContext *ctx) return self->value.asReturnedValue(); } -ReturnedValue DatePrototype::method_setUTCMinutes(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_setUTCMinutes(CallContext *ctx) { DateObject *self = ctx->callData->thisObject.asDateObject(); if (!self) @@ -1100,7 +1100,7 @@ ReturnedValue DatePrototype::method_setUTCMinutes(SimpleCallContext *ctx) return self->value.asReturnedValue(); } -ReturnedValue DatePrototype::method_setHours(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_setHours(CallContext *ctx) { DateObject *self = ctx->callData->thisObject.asDateObject(); if (!self) @@ -1116,7 +1116,7 @@ ReturnedValue DatePrototype::method_setHours(SimpleCallContext *ctx) return self->value.asReturnedValue(); } -ReturnedValue DatePrototype::method_setUTCHours(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_setUTCHours(CallContext *ctx) { DateObject *self = ctx->callData->thisObject.asDateObject(); if (!self) @@ -1132,7 +1132,7 @@ ReturnedValue DatePrototype::method_setUTCHours(SimpleCallContext *ctx) return self->value.asReturnedValue(); } -ReturnedValue DatePrototype::method_setDate(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_setDate(CallContext *ctx) { DateObject *self = ctx->callData->thisObject.asDateObject(); if (!self) @@ -1145,7 +1145,7 @@ ReturnedValue DatePrototype::method_setDate(SimpleCallContext *ctx) return self->value.asReturnedValue(); } -ReturnedValue DatePrototype::method_setUTCDate(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_setUTCDate(CallContext *ctx) { DateObject *self = ctx->callData->thisObject.asDateObject(); if (!self) @@ -1158,7 +1158,7 @@ ReturnedValue DatePrototype::method_setUTCDate(SimpleCallContext *ctx) return self->value.asReturnedValue(); } -ReturnedValue DatePrototype::method_setMonth(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_setMonth(CallContext *ctx) { DateObject *self = ctx->callData->thisObject.asDateObject(); if (!self) @@ -1172,7 +1172,7 @@ ReturnedValue DatePrototype::method_setMonth(SimpleCallContext *ctx) return self->value.asReturnedValue(); } -ReturnedValue DatePrototype::method_setUTCMonth(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_setUTCMonth(CallContext *ctx) { DateObject *self = ctx->callData->thisObject.asDateObject(); if (!self) @@ -1186,7 +1186,7 @@ ReturnedValue DatePrototype::method_setUTCMonth(SimpleCallContext *ctx) return self->value.asReturnedValue(); } -ReturnedValue DatePrototype::method_setYear(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_setYear(CallContext *ctx) { DateObject *self = ctx->callData->thisObject.asDateObject(); if (!self) @@ -1212,7 +1212,7 @@ ReturnedValue DatePrototype::method_setYear(SimpleCallContext *ctx) return self->value.asReturnedValue(); } -ReturnedValue DatePrototype::method_setUTCFullYear(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_setUTCFullYear(CallContext *ctx) { DateObject *self = ctx->callData->thisObject.asDateObject(); if (!self) @@ -1227,7 +1227,7 @@ ReturnedValue DatePrototype::method_setUTCFullYear(SimpleCallContext *ctx) return self->value.asReturnedValue(); } -ReturnedValue DatePrototype::method_setFullYear(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_setFullYear(CallContext *ctx) { DateObject *self = ctx->callData->thisObject.asDateObject(); if (!self) @@ -1244,7 +1244,7 @@ ReturnedValue DatePrototype::method_setFullYear(SimpleCallContext *ctx) return self->value.asReturnedValue(); } -ReturnedValue DatePrototype::method_toUTCString(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_toUTCString(CallContext *ctx) { DateObject *self = ctx->callData->thisObject.asDateObject(); if (!self) @@ -1267,7 +1267,7 @@ static void addZeroPrefixedInt(QString &str, int num, int nDigits) } } -ReturnedValue DatePrototype::method_toISOString(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_toISOString(CallContext *ctx) { DateObject *self = ctx->callData->thisObject.asDateObject(); if (!self) @@ -1305,7 +1305,7 @@ ReturnedValue DatePrototype::method_toISOString(SimpleCallContext *ctx) return ctx->engine->newString(result)->asReturnedValue(); } -ReturnedValue DatePrototype::method_toJSON(SimpleCallContext *ctx) +ReturnedValue DatePrototype::method_toJSON(CallContext *ctx) { Scope scope(ctx); ScopedValue O(scope, __qmljs_to_object(ctx, ValueRef(&ctx->callData->thisObject))); diff --git a/src/qml/jsruntime/qv4dateobject_p.h b/src/qml/jsruntime/qv4dateobject_p.h index 5cd03024c5..e96cac2f20 100644 --- a/src/qml/jsruntime/qv4dateobject_p.h +++ b/src/qml/jsruntime/qv4dateobject_p.h @@ -87,55 +87,55 @@ struct DatePrototype: DateObject static double getThisDate(ExecutionContext *ctx); - static ReturnedValue method_parse(SimpleCallContext *ctx); - static ReturnedValue method_UTC(SimpleCallContext *ctx); - static ReturnedValue method_now(SimpleCallContext *ctx); - - static ReturnedValue method_toString(SimpleCallContext *ctx); - static ReturnedValue method_toDateString(SimpleCallContext *ctx); - static ReturnedValue method_toTimeString(SimpleCallContext *ctx); - static ReturnedValue method_toLocaleString(SimpleCallContext *ctx); - static ReturnedValue method_toLocaleDateString(SimpleCallContext *ctx); - static ReturnedValue method_toLocaleTimeString(SimpleCallContext *ctx); - static ReturnedValue method_valueOf(SimpleCallContext *ctx); - static ReturnedValue method_getTime(SimpleCallContext *ctx); - static ReturnedValue method_getYear(SimpleCallContext *ctx); - static ReturnedValue method_getFullYear(SimpleCallContext *ctx); - static ReturnedValue method_getUTCFullYear(SimpleCallContext *ctx); - static ReturnedValue method_getMonth(SimpleCallContext *ctx); - static ReturnedValue method_getUTCMonth(SimpleCallContext *ctx); - static ReturnedValue method_getDate(SimpleCallContext *ctx); - static ReturnedValue method_getUTCDate(SimpleCallContext *ctx); - static ReturnedValue method_getDay(SimpleCallContext *ctx); - static ReturnedValue method_getUTCDay(SimpleCallContext *ctx); - static ReturnedValue method_getHours(SimpleCallContext *ctx); - static ReturnedValue method_getUTCHours(SimpleCallContext *ctx); - static ReturnedValue method_getMinutes(SimpleCallContext *ctx); - static ReturnedValue method_getUTCMinutes(SimpleCallContext *ctx); - static ReturnedValue method_getSeconds(SimpleCallContext *ctx); - static ReturnedValue method_getUTCSeconds(SimpleCallContext *ctx); - static ReturnedValue method_getMilliseconds(SimpleCallContext *ctx); - static ReturnedValue method_getUTCMilliseconds(SimpleCallContext *ctx); - static ReturnedValue method_getTimezoneOffset(SimpleCallContext *ctx); - static ReturnedValue method_setTime(SimpleCallContext *ctx); - static ReturnedValue method_setMilliseconds(SimpleCallContext *ctx); - static ReturnedValue method_setUTCMilliseconds(SimpleCallContext *ctx); - static ReturnedValue method_setSeconds(SimpleCallContext *ctx); - static ReturnedValue method_setUTCSeconds(SimpleCallContext *ctx); - static ReturnedValue method_setMinutes(SimpleCallContext *ctx); - static ReturnedValue method_setUTCMinutes(SimpleCallContext *ctx); - static ReturnedValue method_setHours(SimpleCallContext *ctx); - static ReturnedValue method_setUTCHours(SimpleCallContext *ctx); - static ReturnedValue method_setDate(SimpleCallContext *ctx); - static ReturnedValue method_setUTCDate(SimpleCallContext *ctx); - static ReturnedValue method_setMonth(SimpleCallContext *ctx); - static ReturnedValue method_setUTCMonth(SimpleCallContext *ctx); - static ReturnedValue method_setYear(SimpleCallContext *ctx); - static ReturnedValue method_setFullYear(SimpleCallContext *ctx); - static ReturnedValue method_setUTCFullYear(SimpleCallContext *ctx); - static ReturnedValue method_toUTCString(SimpleCallContext *ctx); - static ReturnedValue method_toISOString(SimpleCallContext *ctx); - static ReturnedValue method_toJSON(SimpleCallContext *ctx); + static ReturnedValue method_parse(CallContext *ctx); + static ReturnedValue method_UTC(CallContext *ctx); + static ReturnedValue method_now(CallContext *ctx); + + static ReturnedValue method_toString(CallContext *ctx); + static ReturnedValue method_toDateString(CallContext *ctx); + static ReturnedValue method_toTimeString(CallContext *ctx); + static ReturnedValue method_toLocaleString(CallContext *ctx); + static ReturnedValue method_toLocaleDateString(CallContext *ctx); + static ReturnedValue method_toLocaleTimeString(CallContext *ctx); + static ReturnedValue method_valueOf(CallContext *ctx); + static ReturnedValue method_getTime(CallContext *ctx); + static ReturnedValue method_getYear(CallContext *ctx); + static ReturnedValue method_getFullYear(CallContext *ctx); + static ReturnedValue method_getUTCFullYear(CallContext *ctx); + static ReturnedValue method_getMonth(CallContext *ctx); + static ReturnedValue method_getUTCMonth(CallContext *ctx); + static ReturnedValue method_getDate(CallContext *ctx); + static ReturnedValue method_getUTCDate(CallContext *ctx); + static ReturnedValue method_getDay(CallContext *ctx); + static ReturnedValue method_getUTCDay(CallContext *ctx); + static ReturnedValue method_getHours(CallContext *ctx); + static ReturnedValue method_getUTCHours(CallContext *ctx); + static ReturnedValue method_getMinutes(CallContext *ctx); + static ReturnedValue method_getUTCMinutes(CallContext *ctx); + static ReturnedValue method_getSeconds(CallContext *ctx); + static ReturnedValue method_getUTCSeconds(CallContext *ctx); + static ReturnedValue method_getMilliseconds(CallContext *ctx); + static ReturnedValue method_getUTCMilliseconds(CallContext *ctx); + static ReturnedValue method_getTimezoneOffset(CallContext *ctx); + static ReturnedValue method_setTime(CallContext *ctx); + static ReturnedValue method_setMilliseconds(CallContext *ctx); + static ReturnedValue method_setUTCMilliseconds(CallContext *ctx); + static ReturnedValue method_setSeconds(CallContext *ctx); + static ReturnedValue method_setUTCSeconds(CallContext *ctx); + static ReturnedValue method_setMinutes(CallContext *ctx); + static ReturnedValue method_setUTCMinutes(CallContext *ctx); + static ReturnedValue method_setHours(CallContext *ctx); + static ReturnedValue method_setUTCHours(CallContext *ctx); + static ReturnedValue method_setDate(CallContext *ctx); + static ReturnedValue method_setUTCDate(CallContext *ctx); + static ReturnedValue method_setMonth(CallContext *ctx); + static ReturnedValue method_setUTCMonth(CallContext *ctx); + static ReturnedValue method_setYear(CallContext *ctx); + static ReturnedValue method_setFullYear(CallContext *ctx); + static ReturnedValue method_setUTCFullYear(CallContext *ctx); + static ReturnedValue method_toUTCString(CallContext *ctx); + static ReturnedValue method_toISOString(CallContext *ctx); + static ReturnedValue method_toJSON(CallContext *ctx); static void timezoneUpdated(); }; diff --git a/src/qml/jsruntime/qv4debugging.cpp b/src/qml/jsruntime/qv4debugging.cpp index a9fc050483..0d2a9225da 100644 --- a/src/qml/jsruntime/qv4debugging.cpp +++ b/src/qml/jsruntime/qv4debugging.cpp @@ -125,7 +125,8 @@ Debugger::ExecutionState Debugger::currentExecutionState(const uchar *code) cons QV4::ExecutionContext *context = m_engine->current; QV4::Function *function = 0; - if (CallContext *callCtx = context->asCallContext()) + CallContext *callCtx = context->asCallContext(); + if (callCtx && callCtx->function) function = callCtx->function->function; else { Q_ASSERT(context->type == QV4::ExecutionContext::Type_GlobalContext); @@ -230,7 +231,8 @@ void Debugger::convert(ValueRef v, QVariant *varValue, VarInfo::Type *type) cons static CallContext *findContext(ExecutionContext *ctxt, int frame) { while (ctxt) { - if (CallContext *cCtxt = ctxt->asCallContext()) { + CallContext *cCtxt = ctxt->asCallContext(); + if (cCtxt && cCtxt->function) { if (frame < 1) return cCtxt; --frame; @@ -299,9 +301,10 @@ QList<Debugger::VarInfo> Debugger::retrieveLocalsFromContext(const QStringList & if (frame < 0) return args; - CallContext *ctxt = findContext(m_engine->current, frame); - if (!ctxt) + CallContext *sctxt = findContext(m_engine->current, frame); + if (!sctxt || sctxt->type < ExecutionContext::Type_SimpleCallContext) return args; + CallContext *ctxt = static_cast<CallContext *>(sctxt); Scope scope(m_engine); ScopedValue v(scope); diff --git a/src/qml/jsruntime/qv4engine.cpp b/src/qml/jsruntime/qv4engine.cpp index 5d22dde98c..8da593f8e3 100644 --- a/src/qml/jsruntime/qv4engine.cpp +++ b/src/qml/jsruntime/qv4engine.cpp @@ -78,7 +78,7 @@ using namespace QV4; static QBasicAtomicInt engineSerial = Q_BASIC_ATOMIC_INITIALIZER(1); -static ReturnedValue throwTypeError(SimpleCallContext *ctx) +static ReturnedValue throwTypeError(CallContext *ctx) { return ctx->throwTypeError(); } @@ -359,7 +359,7 @@ ExecutionContext *ExecutionEngine::pushGlobalContext() return current; } -Returned<FunctionObject> *ExecutionEngine::newBuiltinFunction(ExecutionContext *scope, const StringRef name, ReturnedValue (*code)(SimpleCallContext *)) +Returned<FunctionObject> *ExecutionEngine::newBuiltinFunction(ExecutionContext *scope, const StringRef name, ReturnedValue (*code)(CallContext *)) { BuiltinFunction *f = new (memoryManager) BuiltinFunction(scope, name, code); return f->asReturned<FunctionObject>(); @@ -546,7 +546,7 @@ Returned<Object> *ExecutionEngine::qmlContextObject() const { ExecutionContext *ctx = current; - if (ctx->type == QV4::ExecutionContext::Type_SimpleCallContext) + if (ctx->type == QV4::ExecutionContext::Type_SimpleCallContext && !ctx->outer) ctx = ctx->parent; if (!ctx->outer) @@ -555,7 +555,7 @@ Returned<Object> *ExecutionEngine::qmlContextObject() const while (ctx->outer && ctx->outer->type != ExecutionContext::Type_GlobalContext) ctx = ctx->outer; - assert(ctx); + Q_ASSERT(ctx); if (ctx->type != ExecutionContext::Type_QmlContext) return 0; @@ -591,7 +591,8 @@ QVector<StackFrame> ExecutionEngine::stackTrace(int frameLimit) const QV4::ExecutionContext *c = current; while (c && frameLimit) { - if (CallContext *callCtx = c->asCallContext()) { + CallContext *callCtx = c->asCallContext(); + if (callCtx && callCtx->function) { StackFrame frame; if (callCtx->function->function) frame.source = callCtx->function->function->sourceFile(); @@ -644,7 +645,8 @@ QUrl ExecutionEngine::resolvedUrl(const QString &file) QUrl base; QV4::ExecutionContext *c = current; while (c) { - if (CallContext *callCtx = c->asCallContext()) { + CallContext *callCtx = c->asCallContext(); + if (callCtx && callCtx->function) { if (callCtx->function->function) base.setUrl(callCtx->function->function->sourceFile()); break; diff --git a/src/qml/jsruntime/qv4engine_p.h b/src/qml/jsruntime/qv4engine_p.h index 3413238f3d..2df148a4a8 100644 --- a/src/qml/jsruntime/qv4engine_p.h +++ b/src/qml/jsruntime/qv4engine_p.h @@ -271,10 +271,10 @@ struct Q_QML_EXPORT ExecutionEngine void enableDebugger(); ExecutionContext *pushGlobalContext(); - void pushContext(SimpleCallContext *context); + void pushContext(CallContext *context); ExecutionContext *popContext(); - Returned<FunctionObject> *newBuiltinFunction(ExecutionContext *scope, const StringRef name, ReturnedValue (*code)(SimpleCallContext *)); + Returned<FunctionObject> *newBuiltinFunction(ExecutionContext *scope, const StringRef name, ReturnedValue (*code)(CallContext *)); Returned<BoundFunction> *newBoundFunction(ExecutionContext *scope, FunctionObjectRef target, const ValueRef boundThis, const QVector<SafeValue> &boundArgs); Returned<Object> *newObject(); @@ -344,7 +344,7 @@ private: QmlExtensions *m_qmlExtensions; }; -inline void ExecutionEngine::pushContext(SimpleCallContext *context) +inline void ExecutionEngine::pushContext(CallContext *context) { context->parent = current; current = context; diff --git a/src/qml/jsruntime/qv4errorobject.cpp b/src/qml/jsruntime/qv4errorobject.cpp index 3f75bc0c79..bac29d19e1 100644 --- a/src/qml/jsruntime/qv4errorobject.cpp +++ b/src/qml/jsruntime/qv4errorobject.cpp @@ -167,7 +167,7 @@ ErrorObject::ErrorObject(InternalClass *ic, const QString &message, const QStrin defineDefaultProperty(QStringLiteral("message"), v); } -ReturnedValue ErrorObject::method_get_stack(SimpleCallContext *ctx) +ReturnedValue ErrorObject::method_get_stack(CallContext *ctx) { Scope scope(ctx); Scoped<ErrorObject> This(scope, ctx->callData->thisObject); @@ -383,7 +383,7 @@ void ErrorPrototype::init(ExecutionEngine *engine, ObjectRef ctor, Object *obj) obj->defineDefaultProperty(QStringLiteral("message"), (s = engine->newString(QString()))); } -ReturnedValue ErrorPrototype::method_toString(SimpleCallContext *ctx) +ReturnedValue ErrorPrototype::method_toString(CallContext *ctx) { Scope scope(ctx); diff --git a/src/qml/jsruntime/qv4errorobject_p.h b/src/qml/jsruntime/qv4errorobject_p.h index b46bea5231..3f4cb8fc43 100644 --- a/src/qml/jsruntime/qv4errorobject_p.h +++ b/src/qml/jsruntime/qv4errorobject_p.h @@ -73,7 +73,7 @@ struct ErrorObject: Object { StackTrace stackTrace; String *stack; - static ReturnedValue method_get_stack(SimpleCallContext *ctx); + static ReturnedValue method_get_stack(CallContext *ctx); static void markObjects(Managed *that, ExecutionEngine *e); static void destroy(Managed *that) { static_cast<ErrorObject *>(that)->~ErrorObject(); } }; @@ -179,7 +179,7 @@ struct ErrorPrototype: ErrorObject void init(ExecutionEngine *engine, ObjectRef ctor) { init(engine, ctor, this); } static void init(ExecutionEngine *engine, ObjectRef ctor, Object *obj); - static ReturnedValue method_toString(SimpleCallContext *ctx); + static ReturnedValue method_toString(CallContext *ctx); }; struct EvalErrorPrototype: ErrorObject diff --git a/src/qml/jsruntime/qv4functionobject.cpp b/src/qml/jsruntime/qv4functionobject.cpp index 35e4202790..7841f7c331 100644 --- a/src/qml/jsruntime/qv4functionobject.cpp +++ b/src/qml/jsruntime/qv4functionobject.cpp @@ -222,7 +222,10 @@ void FunctionObject::markObjects(Managed *that, ExecutionEngine *e) FunctionObject *FunctionObject::creatScriptFunction(ExecutionContext *scope, Function *function) { - if (function->needsActivation() || function->compiledFunction->nFormals > QV4::Global::ReservedArgumentCount) + if (function->needsActivation() || + function->compiledFunction->flags & CompiledData::Function::HasCatchOrWith || + function->compiledFunction->nFormals > QV4::Global::ReservedArgumentCount || + function->isNamedExpression()) return new (scope->engine->memoryManager) ScriptFunction(scope, function); return new (scope->engine->memoryManager) SimpleScriptFunction(scope, function); } @@ -313,7 +316,7 @@ void FunctionPrototype::init(ExecutionEngine *engine, ObjectRef ctor) } -ReturnedValue FunctionPrototype::method_toString(SimpleCallContext *ctx) +ReturnedValue FunctionPrototype::method_toString(CallContext *ctx) { FunctionObject *fun = ctx->callData->thisObject.asFunctionObject(); if (!fun) @@ -322,7 +325,7 @@ ReturnedValue FunctionPrototype::method_toString(SimpleCallContext *ctx) return ctx->engine->newString(QStringLiteral("function() { [code] }"))->asReturnedValue(); } -ReturnedValue FunctionPrototype::method_apply(SimpleCallContext *ctx) +ReturnedValue FunctionPrototype::method_apply(CallContext *ctx) { Scope scope(ctx); FunctionObject *o = ctx->callData->thisObject.asFunctionObject(); @@ -361,7 +364,7 @@ ReturnedValue FunctionPrototype::method_apply(SimpleCallContext *ctx) return o->call(callData); } -ReturnedValue FunctionPrototype::method_call(SimpleCallContext *ctx) +ReturnedValue FunctionPrototype::method_call(CallContext *ctx) { Scope scope(ctx); @@ -378,7 +381,7 @@ ReturnedValue FunctionPrototype::method_call(SimpleCallContext *ctx) return o->call(callData); } -ReturnedValue FunctionPrototype::method_bind(SimpleCallContext *ctx) +ReturnedValue FunctionPrototype::method_bind(CallContext *ctx) { Scope scope(ctx); Scoped<FunctionObject> target(scope, ctx->callData->thisObject); @@ -520,29 +523,41 @@ ReturnedValue SimpleScriptFunction::construct(Managed *that, CallData *callData) ExecutionEngine *v4 = that->internalClass->engine; if (v4->hasException) return Encode::undefined(); - Scope scope(v4); + Scope scope(v4); Scoped<SimpleScriptFunction> f(scope, static_cast<SimpleScriptFunction *>(that)); InternalClass *ic = v4->objectClass; Scoped<Object> proto(scope, f->memberData[Index_Prototype].value); if (!!proto) ic = v4->emptyClass->changePrototype(proto.getPointer()); - Scoped<Object> obj(scope, v4->newObject(ic)); + callData->thisObject = v4->newObject(ic); ExecutionContext *context = v4->current; - void *stackSpace = alloca(requiredMemoryForExecutionContectSimple(f)); - callData->thisObject = obj; - ExecutionContext *ctx = context->newCallContext(stackSpace, scope.alloc(f->varCount), f.getPointer(), callData); + + CallContext ctx; + ctx.initSimpleCallContext(v4, context); + ctx.strictMode = f->strictMode; + ctx.callData = callData; + ctx.function = f.getPointer(); + ctx.compilationUnit = f->function->compilationUnit; + ctx.lookups = ctx.compilationUnit->runtimeLookups; + ctx.outer = f->scope; + ctx.locals = v4->stackPush(f->function->locals.size()); + while (callData->argc < (int)f->formalParameterCount) { + callData->args[callData->argc] = Encode::undefined(); + ++callData->argc; + } + v4->pushContext(&ctx); if (f->function->compiledFunction->hasQmlDependencies()) QmlContextWrapper::registerQmlDependencies(v4, f->function->compiledFunction); ExecutionContextSaver ctxSaver(context); - Scoped<Object> result(scope, f->function->code(ctx, f->function->codeData)); + Scoped<Object> result(scope, f->function->code(&ctx, f->function->codeData)); if (!result) - return obj.asReturnedValue(); + return callData->thisObject.asReturnedValue(); return result.asReturnedValue(); } @@ -552,19 +567,31 @@ ReturnedValue SimpleScriptFunction::call(Managed *that, CallData *callData) if (v4->hasException) return Encode::undefined(); - Scope scope(v4); + SimpleScriptFunction *f = static_cast<SimpleScriptFunction *>(that); - Scoped<SimpleScriptFunction> f(scope, static_cast<SimpleScriptFunction *>(that)); - - void *stackSpace = alloca(requiredMemoryForExecutionContectSimple(f)); + Scope scope(v4); ExecutionContext *context = v4->current; - ExecutionContext *ctx = context->newCallContext(stackSpace, scope.alloc(f->varCount), f.getPointer(), callData); + + CallContext ctx; + ctx.initSimpleCallContext(v4, context); + ctx.strictMode = f->strictMode; + ctx.callData = callData; + ctx.function = f; + ctx.compilationUnit = f->function->compilationUnit; + ctx.lookups = ctx.compilationUnit->runtimeLookups; + ctx.outer = f->scope; + ctx.locals = v4->stackPush(f->function->locals.size()); + while (callData->argc < (int)f->formalParameterCount) { + callData->args[callData->argc] = Encode::undefined(); + ++callData->argc; + } + v4->current = &ctx; if (f->function->compiledFunction->hasQmlDependencies()) QmlContextWrapper::registerQmlDependencies(v4, f->function->compiledFunction); ExecutionContextSaver ctxSaver(context); - return f->function->code(ctx, f->function->codeData); + return f->function->code(&ctx, f->function->codeData); } @@ -572,7 +599,7 @@ ReturnedValue SimpleScriptFunction::call(Managed *that, CallData *callData) DEFINE_MANAGED_VTABLE(BuiltinFunction); -BuiltinFunction::BuiltinFunction(ExecutionContext *scope, const StringRef name, ReturnedValue (*code)(SimpleCallContext *)) +BuiltinFunction::BuiltinFunction(ExecutionContext *scope, const StringRef name, ReturnedValue (*code)(CallContext *)) : FunctionObject(scope, name) , code(code) { @@ -591,12 +618,10 @@ ReturnedValue BuiltinFunction::call(Managed *that, CallData *callData) if (v4->hasException) return Encode::undefined(); - Scope scope(v4); - ExecutionContext *context = v4->current; - SimpleCallContext ctx; - ctx.initSimpleCallContext(f->scope->engine); + CallContext ctx; + ctx.initSimpleCallContext(v4, context); ctx.strictMode = f->scope->strictMode; // ### needed? scope or parent context? ctx.callData = callData; v4->pushContext(&ctx); @@ -614,8 +639,8 @@ ReturnedValue IndexedBuiltinFunction::call(Managed *that, CallData *callData) ExecutionContext *context = v4->current; Scope scope(v4); - SimpleCallContext ctx; - ctx.initSimpleCallContext(f->scope->engine); + CallContext ctx; + ctx.initSimpleCallContext(v4, context); ctx.strictMode = f->scope->strictMode; // ### needed? scope or parent context? ctx.callData = callData; v4->pushContext(&ctx); diff --git a/src/qml/jsruntime/qv4functionobject_p.h b/src/qml/jsruntime/qv4functionobject_p.h index 3f526947a0..2fc36d862f 100644 --- a/src/qml/jsruntime/qv4functionobject_p.h +++ b/src/qml/jsruntime/qv4functionobject_p.h @@ -164,17 +164,17 @@ struct FunctionPrototype: FunctionObject FunctionPrototype(InternalClass *ic); void init(ExecutionEngine *engine, ObjectRef ctor); - static ReturnedValue method_toString(SimpleCallContext *ctx); - static ReturnedValue method_apply(SimpleCallContext *ctx); - static ReturnedValue method_call(SimpleCallContext *ctx); - static ReturnedValue method_bind(SimpleCallContext *ctx); + static ReturnedValue method_toString(CallContext *ctx); + static ReturnedValue method_apply(CallContext *ctx); + static ReturnedValue method_call(CallContext *ctx); + static ReturnedValue method_bind(CallContext *ctx); }; struct BuiltinFunction: FunctionObject { Q_MANAGED - ReturnedValue (*code)(SimpleCallContext *); + ReturnedValue (*code)(CallContext *); - BuiltinFunction(ExecutionContext *scope, const StringRef name, ReturnedValue (*code)(SimpleCallContext *)); + BuiltinFunction(ExecutionContext *scope, const StringRef name, ReturnedValue (*code)(CallContext *)); static ReturnedValue construct(Managed *, CallData *); static ReturnedValue call(Managed *that, CallData *callData); @@ -184,10 +184,10 @@ struct IndexedBuiltinFunction: FunctionObject { Q_MANAGED - ReturnedValue (*code)(SimpleCallContext *ctx, uint index); + ReturnedValue (*code)(CallContext *ctx, uint index); uint index; - IndexedBuiltinFunction(ExecutionContext *scope, uint index, ReturnedValue (*code)(SimpleCallContext *ctx, uint index)) + IndexedBuiltinFunction(ExecutionContext *scope, uint index, ReturnedValue (*code)(CallContext *ctx, uint index)) : FunctionObject(scope) , code(code) , index(index) diff --git a/src/qml/jsruntime/qv4globalobject.cpp b/src/qml/jsruntime/qv4globalobject.cpp index 3ded454f2e..82622de5bb 100644 --- a/src/qml/jsruntime/qv4globalobject.cpp +++ b/src/qml/jsruntime/qv4globalobject.cpp @@ -459,7 +459,7 @@ static inline int toInt(const QChar &qc, int R) } // parseInt [15.1.2.2] -ReturnedValue GlobalFunctions::method_parseInt(SimpleCallContext *ctx) +ReturnedValue GlobalFunctions::method_parseInt(CallContext *ctx) { Scope scope(ctx); ScopedValue string(scope, ctx->argument(0)); @@ -543,7 +543,7 @@ ReturnedValue GlobalFunctions::method_parseInt(SimpleCallContext *ctx) } // parseFloat [15.1.2.3] -ReturnedValue GlobalFunctions::method_parseFloat(SimpleCallContext *ctx) +ReturnedValue GlobalFunctions::method_parseFloat(CallContext *ctx) { Scope scope(ctx); @@ -572,7 +572,7 @@ ReturnedValue GlobalFunctions::method_parseFloat(SimpleCallContext *ctx) } /// isNaN [15.1.2.4] -ReturnedValue GlobalFunctions::method_isNaN(SimpleCallContext *ctx) +ReturnedValue GlobalFunctions::method_isNaN(CallContext *ctx) { if (!ctx->callData->argc) // undefined gets converted to NaN @@ -586,7 +586,7 @@ ReturnedValue GlobalFunctions::method_isNaN(SimpleCallContext *ctx) } /// isFinite [15.1.2.5] -ReturnedValue GlobalFunctions::method_isFinite(SimpleCallContext *ctx) +ReturnedValue GlobalFunctions::method_isFinite(CallContext *ctx) { if (!ctx->callData->argc) // undefined gets converted to NaN @@ -600,7 +600,7 @@ ReturnedValue GlobalFunctions::method_isFinite(SimpleCallContext *ctx) } /// decodeURI [15.1.3.1] -ReturnedValue GlobalFunctions::method_decodeURI(SimpleCallContext *context) +ReturnedValue GlobalFunctions::method_decodeURI(CallContext *context) { if (context->callData->argc == 0) return Encode::undefined(); @@ -618,7 +618,7 @@ ReturnedValue GlobalFunctions::method_decodeURI(SimpleCallContext *context) } /// decodeURIComponent [15.1.3.2] -ReturnedValue GlobalFunctions::method_decodeURIComponent(SimpleCallContext *context) +ReturnedValue GlobalFunctions::method_decodeURIComponent(CallContext *context) { if (context->callData->argc == 0) return Encode::undefined(); @@ -636,7 +636,7 @@ ReturnedValue GlobalFunctions::method_decodeURIComponent(SimpleCallContext *cont } /// encodeURI [15.1.3.3] -ReturnedValue GlobalFunctions::method_encodeURI(SimpleCallContext *context) +ReturnedValue GlobalFunctions::method_encodeURI(CallContext *context) { if (context->callData->argc == 0) return Encode::undefined(); @@ -654,7 +654,7 @@ ReturnedValue GlobalFunctions::method_encodeURI(SimpleCallContext *context) } /// encodeURIComponent [15.1.3.4] -ReturnedValue GlobalFunctions::method_encodeURIComponent(SimpleCallContext *context) +ReturnedValue GlobalFunctions::method_encodeURIComponent(CallContext *context) { if (context->callData->argc == 0) return Encode::undefined(); @@ -671,7 +671,7 @@ ReturnedValue GlobalFunctions::method_encodeURIComponent(SimpleCallContext *cont return context->engine->newString(out)->asReturnedValue(); } -ReturnedValue GlobalFunctions::method_escape(SimpleCallContext *context) +ReturnedValue GlobalFunctions::method_escape(CallContext *context) { if (!context->callData->argc) return context->engine->newString(QStringLiteral("undefined"))->asReturnedValue(); @@ -680,7 +680,7 @@ ReturnedValue GlobalFunctions::method_escape(SimpleCallContext *context) return context->engine->newString(escape(str))->asReturnedValue(); } -ReturnedValue GlobalFunctions::method_unescape(SimpleCallContext *context) +ReturnedValue GlobalFunctions::method_unescape(CallContext *context) { if (!context->callData->argc) return context->engine->newString(QStringLiteral("undefined"))->asReturnedValue(); diff --git a/src/qml/jsruntime/qv4globalobject_p.h b/src/qml/jsruntime/qv4globalobject_p.h index e6a3b0d773..bf529a465d 100644 --- a/src/qml/jsruntime/qv4globalobject_p.h +++ b/src/qml/jsruntime/qv4globalobject_p.h @@ -61,16 +61,16 @@ struct Q_QML_EXPORT EvalFunction : FunctionObject struct GlobalFunctions { - static ReturnedValue method_parseInt(SimpleCallContext *context); - static ReturnedValue method_parseFloat(SimpleCallContext *context); - static ReturnedValue method_isNaN(SimpleCallContext *context); - static ReturnedValue method_isFinite(SimpleCallContext *ctx); - static ReturnedValue method_decodeURI(SimpleCallContext *context); - static ReturnedValue method_decodeURIComponent(SimpleCallContext *context); - static ReturnedValue method_encodeURI(SimpleCallContext *context); - static ReturnedValue method_encodeURIComponent(SimpleCallContext *context); - static ReturnedValue method_escape(SimpleCallContext *context); - static ReturnedValue method_unescape(SimpleCallContext *context); + static ReturnedValue method_parseInt(CallContext *context); + static ReturnedValue method_parseFloat(CallContext *context); + static ReturnedValue method_isNaN(CallContext *context); + static ReturnedValue method_isFinite(CallContext *ctx); + static ReturnedValue method_decodeURI(CallContext *context); + static ReturnedValue method_decodeURIComponent(CallContext *context); + static ReturnedValue method_encodeURI(CallContext *context); + static ReturnedValue method_encodeURIComponent(CallContext *context); + static ReturnedValue method_escape(CallContext *context); + static ReturnedValue method_unescape(CallContext *context); }; } diff --git a/src/qml/jsruntime/qv4include.cpp b/src/qml/jsruntime/qv4include.cpp index f156065125..8f2548064a 100644 --- a/src/qml/jsruntime/qv4include.cpp +++ b/src/qml/jsruntime/qv4include.cpp @@ -179,7 +179,7 @@ void QV4Include::finished() /* Documented in qv8engine.cpp */ -QV4::ReturnedValue QV4Include::method_include(QV4::SimpleCallContext *ctx) +QV4::ReturnedValue QV4Include::method_include(QV4::CallContext *ctx) { if (!ctx->callData->argc) return QV4::Encode::undefined(); diff --git a/src/qml/jsruntime/qv4include_p.h b/src/qml/jsruntime/qv4include_p.h index 49d65e2149..c4c72f3a83 100644 --- a/src/qml/jsruntime/qv4include_p.h +++ b/src/qml/jsruntime/qv4include_p.h @@ -78,7 +78,7 @@ public: Exception = 3 }; - static QV4::ReturnedValue method_include(QV4::SimpleCallContext *ctx); + static QV4::ReturnedValue method_include(QV4::CallContext *ctx); private Q_SLOTS: void finished(); diff --git a/src/qml/jsruntime/qv4jsonobject.cpp b/src/qml/jsruntime/qv4jsonobject.cpp index c4d1ebc545..2fa5a7c0bc 100644 --- a/src/qml/jsruntime/qv4jsonobject.cpp +++ b/src/qml/jsruntime/qv4jsonobject.cpp @@ -893,7 +893,7 @@ JsonObject::JsonObject(ExecutionEngine *engine) } -ReturnedValue JsonObject::method_parse(SimpleCallContext *ctx) +ReturnedValue JsonObject::method_parse(CallContext *ctx) { Scope scope(ctx); ScopedValue v(scope, ctx->argument(0)); @@ -911,7 +911,7 @@ ReturnedValue JsonObject::method_parse(SimpleCallContext *ctx) return result.asReturnedValue(); } -ReturnedValue JsonObject::method_stringify(SimpleCallContext *ctx) +ReturnedValue JsonObject::method_stringify(CallContext *ctx) { Scope scope(ctx); diff --git a/src/qml/jsruntime/qv4jsonobject_p.h b/src/qml/jsruntime/qv4jsonobject_p.h index bdce810680..f63e7726f5 100644 --- a/src/qml/jsruntime/qv4jsonobject_p.h +++ b/src/qml/jsruntime/qv4jsonobject_p.h @@ -56,8 +56,8 @@ private: public: JsonObject(ExecutionEngine *engine); - static ReturnedValue method_parse(SimpleCallContext *ctx); - static ReturnedValue method_stringify(SimpleCallContext *ctx); + static ReturnedValue method_parse(CallContext *ctx); + static ReturnedValue method_stringify(CallContext *ctx); static ReturnedValue fromJsonValue(ExecutionEngine *engine, const QJsonValue &value); static ReturnedValue fromJsonObject(ExecutionEngine *engine, const QJsonObject &object); diff --git a/src/qml/jsruntime/qv4mathobject.cpp b/src/qml/jsruntime/qv4mathobject.cpp index d5a1a88dc5..5a7af1f041 100644 --- a/src/qml/jsruntime/qv4mathobject.cpp +++ b/src/qml/jsruntime/qv4mathobject.cpp @@ -102,7 +102,7 @@ static double copySign(double x, double y) return x; } -ReturnedValue MathObject::method_abs(SimpleCallContext *context) +ReturnedValue MathObject::method_abs(CallContext *context) { if (!context->callData->argc) return Encode(qSNaN()); @@ -119,7 +119,7 @@ ReturnedValue MathObject::method_abs(SimpleCallContext *context) return Encode(v < 0 ? -v : v); } -ReturnedValue MathObject::method_acos(SimpleCallContext *context) +ReturnedValue MathObject::method_acos(CallContext *context) { double v = context->callData->argc ? context->callData->args[0].toNumber() : 2; if (v > 1) @@ -128,7 +128,7 @@ ReturnedValue MathObject::method_acos(SimpleCallContext *context) return Encode(::acos(v)); } -ReturnedValue MathObject::method_asin(SimpleCallContext *context) +ReturnedValue MathObject::method_asin(CallContext *context) { double v = context->callData->argc ? context->callData->args[0].toNumber() : 2; if (v > 1) @@ -137,7 +137,7 @@ ReturnedValue MathObject::method_asin(SimpleCallContext *context) return Encode(::asin(v)); } -ReturnedValue MathObject::method_atan(SimpleCallContext *context) +ReturnedValue MathObject::method_atan(CallContext *context) { double v = context->callData->argc ? context->callData->args[0].toNumber() : qSNaN(); if (v == 0.0) @@ -146,7 +146,7 @@ ReturnedValue MathObject::method_atan(SimpleCallContext *context) return Encode(::atan(v)); } -ReturnedValue MathObject::method_atan2(SimpleCallContext *context) +ReturnedValue MathObject::method_atan2(CallContext *context) { double v1 = context->callData->argc ? context->callData->args[0].toNumber() : qSNaN(); double v2 = context->callData->argc > 1 ? context->callData->args[1].toNumber() : qSNaN(); @@ -164,7 +164,7 @@ ReturnedValue MathObject::method_atan2(SimpleCallContext *context) return Encode(::atan2(v1, v2)); } -ReturnedValue MathObject::method_ceil(SimpleCallContext *context) +ReturnedValue MathObject::method_ceil(CallContext *context) { double v = context->callData->argc ? context->callData->args[0].toNumber() : qSNaN(); if (v < 0.0 && v > -1.0) @@ -173,13 +173,13 @@ ReturnedValue MathObject::method_ceil(SimpleCallContext *context) return Encode(::ceil(v)); } -ReturnedValue MathObject::method_cos(SimpleCallContext *context) +ReturnedValue MathObject::method_cos(CallContext *context) { double v = context->callData->argc ? context->callData->args[0].toNumber() : qSNaN(); return Encode(::cos(v)); } -ReturnedValue MathObject::method_exp(SimpleCallContext *context) +ReturnedValue MathObject::method_exp(CallContext *context) { double v = context->callData->argc ? context->callData->args[0].toNumber() : qSNaN(); if (qIsInf(v)) { @@ -192,13 +192,13 @@ ReturnedValue MathObject::method_exp(SimpleCallContext *context) } } -ReturnedValue MathObject::method_floor(SimpleCallContext *context) +ReturnedValue MathObject::method_floor(CallContext *context) { double v = context->callData->argc ? context->callData->args[0].toNumber() : qSNaN(); return Encode(::floor(v)); } -ReturnedValue MathObject::method_log(SimpleCallContext *context) +ReturnedValue MathObject::method_log(CallContext *context) { double v = context->callData->argc ? context->callData->args[0].toNumber() : qSNaN(); if (v < 0) @@ -207,7 +207,7 @@ ReturnedValue MathObject::method_log(SimpleCallContext *context) return Encode(::log(v)); } -ReturnedValue MathObject::method_max(SimpleCallContext *context) +ReturnedValue MathObject::method_max(CallContext *context) { double mx = -qInf(); for (int i = 0; i < context->callData->argc; ++i) { @@ -218,7 +218,7 @@ ReturnedValue MathObject::method_max(SimpleCallContext *context) return Encode(mx); } -ReturnedValue MathObject::method_min(SimpleCallContext *context) +ReturnedValue MathObject::method_min(CallContext *context) { double mx = qInf(); for (int i = 0; i < context->callData->argc; ++i) { @@ -231,7 +231,7 @@ ReturnedValue MathObject::method_min(SimpleCallContext *context) return Encode(mx); } -ReturnedValue MathObject::method_pow(SimpleCallContext *context) +ReturnedValue MathObject::method_pow(CallContext *context) { double x = context->callData->argc > 0 ? context->callData->args[0].toNumber() : qSNaN(); double y = context->callData->argc > 1 ? context->callData->args[1].toNumber() : qSNaN(); @@ -283,7 +283,7 @@ ReturnedValue MathObject::method_pow(SimpleCallContext *context) Q_GLOBAL_STATIC(QThreadStorage<bool *>, seedCreatedStorage); -ReturnedValue MathObject::method_random(SimpleCallContext *context) +ReturnedValue MathObject::method_random(CallContext *context) { if (!seedCreatedStorage()->hasLocalData()) { qsrand(QTime(0,0,0).msecsTo(QTime::currentTime()) ^ reinterpret_cast<quintptr>(context)); @@ -292,26 +292,26 @@ ReturnedValue MathObject::method_random(SimpleCallContext *context) return Encode(qrand() / (double) RAND_MAX); } -ReturnedValue MathObject::method_round(SimpleCallContext *context) +ReturnedValue MathObject::method_round(CallContext *context) { double v = context->callData->argc ? context->callData->args[0].toNumber() : qSNaN(); v = copySign(::floor(v + 0.5), v); return Encode(v); } -ReturnedValue MathObject::method_sin(SimpleCallContext *context) +ReturnedValue MathObject::method_sin(CallContext *context) { double v = context->callData->argc ? context->callData->args[0].toNumber() : qSNaN(); return Encode(::sin(v)); } -ReturnedValue MathObject::method_sqrt(SimpleCallContext *context) +ReturnedValue MathObject::method_sqrt(CallContext *context) { double v = context->callData->argc ? context->callData->args[0].toNumber() : qSNaN(); return Encode(::sqrt(v)); } -ReturnedValue MathObject::method_tan(SimpleCallContext *context) +ReturnedValue MathObject::method_tan(CallContext *context) { double v = context->callData->argc ? context->callData->args[0].toNumber() : qSNaN(); if (v == 0.0) diff --git a/src/qml/jsruntime/qv4mathobject_p.h b/src/qml/jsruntime/qv4mathobject_p.h index b65264b5dd..dca75e6c28 100644 --- a/src/qml/jsruntime/qv4mathobject_p.h +++ b/src/qml/jsruntime/qv4mathobject_p.h @@ -51,24 +51,24 @@ struct MathObject: Object { MathObject(ExecutionEngine *engine); - static ReturnedValue method_abs(SimpleCallContext *context); - static ReturnedValue method_acos(SimpleCallContext *context); - static ReturnedValue method_asin(SimpleCallContext *context); - static ReturnedValue method_atan(SimpleCallContext *context); - static ReturnedValue method_atan2(SimpleCallContext *context); - static ReturnedValue method_ceil(SimpleCallContext *context); - static ReturnedValue method_cos(SimpleCallContext *context); - static ReturnedValue method_exp(SimpleCallContext *context); - static ReturnedValue method_floor(SimpleCallContext *context); - static ReturnedValue method_log(SimpleCallContext *context); - static ReturnedValue method_max(SimpleCallContext *context); - static ReturnedValue method_min(SimpleCallContext *context); - static ReturnedValue method_pow(SimpleCallContext *context); - static ReturnedValue method_random(SimpleCallContext *context); - static ReturnedValue method_round(SimpleCallContext *context); - static ReturnedValue method_sin(SimpleCallContext *context); - static ReturnedValue method_sqrt(SimpleCallContext *context); - static ReturnedValue method_tan(SimpleCallContext *context); + static ReturnedValue method_abs(CallContext *context); + static ReturnedValue method_acos(CallContext *context); + static ReturnedValue method_asin(CallContext *context); + static ReturnedValue method_atan(CallContext *context); + static ReturnedValue method_atan2(CallContext *context); + static ReturnedValue method_ceil(CallContext *context); + static ReturnedValue method_cos(CallContext *context); + static ReturnedValue method_exp(CallContext *context); + static ReturnedValue method_floor(CallContext *context); + static ReturnedValue method_log(CallContext *context); + static ReturnedValue method_max(CallContext *context); + static ReturnedValue method_min(CallContext *context); + static ReturnedValue method_pow(CallContext *context); + static ReturnedValue method_random(CallContext *context); + static ReturnedValue method_round(CallContext *context); + static ReturnedValue method_sin(CallContext *context); + static ReturnedValue method_sqrt(CallContext *context); + static ReturnedValue method_tan(CallContext *context); }; } diff --git a/src/qml/jsruntime/qv4numberobject.cpp b/src/qml/jsruntime/qv4numberobject.cpp index 2000297b84..039b790aed 100644 --- a/src/qml/jsruntime/qv4numberobject.cpp +++ b/src/qml/jsruntime/qv4numberobject.cpp @@ -121,7 +121,7 @@ inline double thisNumber(ExecutionContext *ctx) return n->value.asDouble(); } -ReturnedValue NumberPrototype::method_toString(SimpleCallContext *ctx) +ReturnedValue NumberPrototype::method_toString(CallContext *ctx) { double num = thisNumber(ctx); if (ctx->engine->hasException) @@ -173,7 +173,7 @@ ReturnedValue NumberPrototype::method_toString(SimpleCallContext *ctx) return Primitive::fromDouble(num).toString(ctx)->asReturnedValue(); } -ReturnedValue NumberPrototype::method_toLocaleString(SimpleCallContext *ctx) +ReturnedValue NumberPrototype::method_toLocaleString(CallContext *ctx) { Scope scope(ctx); ScopedValue v(scope, thisNumberValue(ctx)); @@ -183,12 +183,12 @@ ReturnedValue NumberPrototype::method_toLocaleString(SimpleCallContext *ctx) return str.asReturnedValue(); } -ReturnedValue NumberPrototype::method_valueOf(SimpleCallContext *ctx) +ReturnedValue NumberPrototype::method_valueOf(CallContext *ctx) { return thisNumberValue(ctx); } -ReturnedValue NumberPrototype::method_toFixed(SimpleCallContext *ctx) +ReturnedValue NumberPrototype::method_toFixed(CallContext *ctx) { double v = thisNumber(ctx); if (ctx->engine->hasException) @@ -217,7 +217,7 @@ ReturnedValue NumberPrototype::method_toFixed(SimpleCallContext *ctx) return ctx->engine->newString(str)->asReturnedValue(); } -ReturnedValue NumberPrototype::method_toExponential(SimpleCallContext *ctx) +ReturnedValue NumberPrototype::method_toExponential(CallContext *ctx) { Scope scope(ctx); double d = thisNumber(ctx); @@ -242,7 +242,7 @@ ReturnedValue NumberPrototype::method_toExponential(SimpleCallContext *ctx) return ctx->engine->newString(result)->asReturnedValue(); } -ReturnedValue NumberPrototype::method_toPrecision(SimpleCallContext *ctx) +ReturnedValue NumberPrototype::method_toPrecision(CallContext *ctx) { Scope scope(ctx); ScopedValue v(scope, thisNumberValue(ctx)); diff --git a/src/qml/jsruntime/qv4numberobject_p.h b/src/qml/jsruntime/qv4numberobject_p.h index a4d13267bd..1ca3a71249 100644 --- a/src/qml/jsruntime/qv4numberobject_p.h +++ b/src/qml/jsruntime/qv4numberobject_p.h @@ -63,12 +63,12 @@ struct NumberPrototype: NumberObject NumberPrototype(InternalClass *ic): NumberObject(ic) {} void init(ExecutionEngine *engine, ObjectRef ctor); - static ReturnedValue method_toString(SimpleCallContext *ctx); - static ReturnedValue method_toLocaleString(SimpleCallContext *ctx); - static ReturnedValue method_valueOf(SimpleCallContext *ctx); - static ReturnedValue method_toFixed(SimpleCallContext *ctx); - static ReturnedValue method_toExponential(SimpleCallContext *ctx); - static ReturnedValue method_toPrecision(SimpleCallContext *ctx); + static ReturnedValue method_toString(CallContext *ctx); + static ReturnedValue method_toLocaleString(CallContext *ctx); + static ReturnedValue method_valueOf(CallContext *ctx); + static ReturnedValue method_toFixed(CallContext *ctx); + static ReturnedValue method_toExponential(CallContext *ctx); + static ReturnedValue method_toPrecision(CallContext *ctx); }; diff --git a/src/qml/jsruntime/qv4object.cpp b/src/qml/jsruntime/qv4object.cpp index 66b1b58b67..099b5a5480 100644 --- a/src/qml/jsruntime/qv4object.cpp +++ b/src/qml/jsruntime/qv4object.cpp @@ -187,7 +187,7 @@ void Object::defineDefaultProperty(const QString &name, ValueRef value) defineDefaultProperty(s, value); } -void Object::defineDefaultProperty(const QString &name, ReturnedValue (*code)(SimpleCallContext *), int argumentCount) +void Object::defineDefaultProperty(const QString &name, ReturnedValue (*code)(CallContext *), int argumentCount) { ExecutionEngine *e = engine(); Scope scope(e); @@ -197,7 +197,7 @@ void Object::defineDefaultProperty(const QString &name, ReturnedValue (*code)(Si defineDefaultProperty(s, function); } -void Object::defineDefaultProperty(const StringRef name, ReturnedValue (*code)(SimpleCallContext *), int argumentCount) +void Object::defineDefaultProperty(const StringRef name, ReturnedValue (*code)(CallContext *), int argumentCount) { ExecutionEngine *e = engine(); Scope scope(e); @@ -206,7 +206,7 @@ void Object::defineDefaultProperty(const StringRef name, ReturnedValue (*code)(S defineDefaultProperty(name, function); } -void Object::defineAccessorProperty(const QString &name, ReturnedValue (*getter)(SimpleCallContext *), ReturnedValue (*setter)(SimpleCallContext *)) +void Object::defineAccessorProperty(const QString &name, ReturnedValue (*getter)(CallContext *), ReturnedValue (*setter)(CallContext *)) { ExecutionEngine *e = engine(); Scope scope(e); @@ -214,7 +214,7 @@ void Object::defineAccessorProperty(const QString &name, ReturnedValue (*getter) defineAccessorProperty(s, getter, setter); } -void Object::defineAccessorProperty(const StringRef name, ReturnedValue (*getter)(SimpleCallContext *), ReturnedValue (*setter)(SimpleCallContext *)) +void Object::defineAccessorProperty(const StringRef name, ReturnedValue (*getter)(CallContext *), ReturnedValue (*setter)(CallContext *)) { ExecutionEngine *v4 = engine(); Property *p = insertMember(name, QV4::Attr_Accessor|QV4::Attr_NotConfigurable|QV4::Attr_NotEnumerable); diff --git a/src/qml/jsruntime/qv4object_p.h b/src/qml/jsruntime/qv4object_p.h index 33f785ec90..daef18d4e2 100644 --- a/src/qml/jsruntime/qv4object_p.h +++ b/src/qml/jsruntime/qv4object_p.h @@ -158,10 +158,10 @@ struct Q_QML_EXPORT Object: Managed { /* The spec default: Writable: true, Enumerable: false, Configurable: true */ void defineDefaultProperty(const StringRef name, ValueRef value); void defineDefaultProperty(const QString &name, ValueRef value); - void defineDefaultProperty(const QString &name, ReturnedValue (*code)(SimpleCallContext *), int argumentCount = 0); - void defineDefaultProperty(const StringRef name, ReturnedValue (*code)(SimpleCallContext *), int argumentCount = 0); - void defineAccessorProperty(const QString &name, ReturnedValue (*getter)(SimpleCallContext *), ReturnedValue (*setter)(SimpleCallContext *)); - void defineAccessorProperty(const StringRef name, ReturnedValue (*getter)(SimpleCallContext *), ReturnedValue (*setter)(SimpleCallContext *)); + void defineDefaultProperty(const QString &name, ReturnedValue (*code)(CallContext *), int argumentCount = 0); + void defineDefaultProperty(const StringRef name, ReturnedValue (*code)(CallContext *), int argumentCount = 0); + void defineAccessorProperty(const QString &name, ReturnedValue (*getter)(CallContext *), ReturnedValue (*setter)(CallContext *)); + void defineAccessorProperty(const StringRef name, ReturnedValue (*getter)(CallContext *), ReturnedValue (*setter)(CallContext *)); /* Fixed: Writable: false, Enumerable: false, Configurable: false */ void defineReadonlyProperty(const QString &name, ValueRef value); void defineReadonlyProperty(const StringRef name, ValueRef value); diff --git a/src/qml/jsruntime/qv4objectproto.cpp b/src/qml/jsruntime/qv4objectproto.cpp index 2f14d8b148..4369267278 100644 --- a/src/qml/jsruntime/qv4objectproto.cpp +++ b/src/qml/jsruntime/qv4objectproto.cpp @@ -138,7 +138,7 @@ void ObjectPrototype::init(ExecutionEngine *v4, ObjectRef ctor) p->setSetter(v4->newBuiltinFunction(v4->rootContext, id_proto, method_set_proto)->getPointer()); } -ReturnedValue ObjectPrototype::method_getPrototypeOf(SimpleCallContext *ctx) +ReturnedValue ObjectPrototype::method_getPrototypeOf(CallContext *ctx) { Scope scope(ctx); Scoped<Object> o(scope, ctx->argument(0)); @@ -149,7 +149,7 @@ ReturnedValue ObjectPrototype::method_getPrototypeOf(SimpleCallContext *ctx) return !!p ? p->asReturnedValue() : Encode::null(); } -ReturnedValue ObjectPrototype::method_getOwnPropertyDescriptor(SimpleCallContext *ctx) +ReturnedValue ObjectPrototype::method_getOwnPropertyDescriptor(CallContext *ctx) { Scope scope(ctx); Scoped<Object> O(scope, ctx->argument(0)); @@ -165,7 +165,7 @@ ReturnedValue ObjectPrototype::method_getOwnPropertyDescriptor(SimpleCallContext return fromPropertyDescriptor(ctx, desc, attrs); } -ReturnedValue ObjectPrototype::method_getOwnPropertyNames(SimpleCallContext *context) +ReturnedValue ObjectPrototype::method_getOwnPropertyNames(CallContext *context) { Scope scope(context); ScopedObject O(scope, context->argument(0)); @@ -176,7 +176,7 @@ ReturnedValue ObjectPrototype::method_getOwnPropertyNames(SimpleCallContext *con return array.asReturnedValue(); } -ReturnedValue ObjectPrototype::method_create(SimpleCallContext *ctx) +ReturnedValue ObjectPrototype::method_create(CallContext *ctx) { Scope scope(ctx); ScopedValue O(scope, ctx->argument(0)); @@ -194,7 +194,7 @@ ReturnedValue ObjectPrototype::method_create(SimpleCallContext *ctx) return newObject.asReturnedValue(); } -ReturnedValue ObjectPrototype::method_defineProperty(SimpleCallContext *ctx) +ReturnedValue ObjectPrototype::method_defineProperty(CallContext *ctx) { Scope scope(ctx); Scoped<Object> O(scope, ctx->argument(0)); @@ -218,7 +218,7 @@ ReturnedValue ObjectPrototype::method_defineProperty(SimpleCallContext *ctx) return O.asReturnedValue(); } -ReturnedValue ObjectPrototype::method_defineProperties(SimpleCallContext *ctx) +ReturnedValue ObjectPrototype::method_defineProperties(CallContext *ctx) { Scope scope(ctx); Scoped<Object> O(scope, ctx->argument(0)); @@ -256,7 +256,7 @@ ReturnedValue ObjectPrototype::method_defineProperties(SimpleCallContext *ctx) return O.asReturnedValue(); } -ReturnedValue ObjectPrototype::method_seal(SimpleCallContext *ctx) +ReturnedValue ObjectPrototype::method_seal(CallContext *ctx) { Scope scope(ctx); Scoped<Object> o(scope, ctx->argument(0)); @@ -276,7 +276,7 @@ ReturnedValue ObjectPrototype::method_seal(SimpleCallContext *ctx) return o.asReturnedValue(); } -ReturnedValue ObjectPrototype::method_freeze(SimpleCallContext *ctx) +ReturnedValue ObjectPrototype::method_freeze(CallContext *ctx) { Scope scope(ctx); Scoped<Object> o(scope, ctx->argument(0)); @@ -297,7 +297,7 @@ ReturnedValue ObjectPrototype::method_freeze(SimpleCallContext *ctx) return o.asReturnedValue(); } -ReturnedValue ObjectPrototype::method_preventExtensions(SimpleCallContext *ctx) +ReturnedValue ObjectPrototype::method_preventExtensions(CallContext *ctx) { Scope scope(ctx); Scoped<Object> o(scope, ctx->argument(0)); @@ -308,7 +308,7 @@ ReturnedValue ObjectPrototype::method_preventExtensions(SimpleCallContext *ctx) return o.asReturnedValue(); } -ReturnedValue ObjectPrototype::method_isSealed(SimpleCallContext *ctx) +ReturnedValue ObjectPrototype::method_isSealed(CallContext *ctx) { Scope scope(ctx); Scoped<Object> o(scope, ctx->argument(0)); @@ -336,7 +336,7 @@ ReturnedValue ObjectPrototype::method_isSealed(SimpleCallContext *ctx) return Encode(true); } -ReturnedValue ObjectPrototype::method_isFrozen(SimpleCallContext *ctx) +ReturnedValue ObjectPrototype::method_isFrozen(CallContext *ctx) { Scope scope(ctx); Scoped<Object> o(scope, ctx->argument(0)); @@ -364,7 +364,7 @@ ReturnedValue ObjectPrototype::method_isFrozen(SimpleCallContext *ctx) return Encode(true); } -ReturnedValue ObjectPrototype::method_isExtensible(SimpleCallContext *ctx) +ReturnedValue ObjectPrototype::method_isExtensible(CallContext *ctx) { Scope scope(ctx); Scoped<Object> o(scope, ctx->argument(0)); @@ -374,7 +374,7 @@ ReturnedValue ObjectPrototype::method_isExtensible(SimpleCallContext *ctx) return Encode((bool)o->extensible); } -ReturnedValue ObjectPrototype::method_keys(SimpleCallContext *ctx) +ReturnedValue ObjectPrototype::method_keys(CallContext *ctx) { Scope scope(ctx); Scoped<Object> o(scope, ctx->argument(0)); @@ -395,7 +395,7 @@ ReturnedValue ObjectPrototype::method_keys(SimpleCallContext *ctx) return a.asReturnedValue(); } -ReturnedValue ObjectPrototype::method_toString(SimpleCallContext *ctx) +ReturnedValue ObjectPrototype::method_toString(CallContext *ctx) { Scope scope(ctx); if (ctx->callData->thisObject.isUndefined()) { @@ -409,7 +409,7 @@ ReturnedValue ObjectPrototype::method_toString(SimpleCallContext *ctx) } } -ReturnedValue ObjectPrototype::method_toLocaleString(SimpleCallContext *ctx) +ReturnedValue ObjectPrototype::method_toLocaleString(CallContext *ctx) { Scope scope(ctx); ScopedObject o(scope, ctx->callData->thisObject.toObject(ctx)); @@ -423,7 +423,7 @@ ReturnedValue ObjectPrototype::method_toLocaleString(SimpleCallContext *ctx) return f->call(callData); } -ReturnedValue ObjectPrototype::method_valueOf(SimpleCallContext *ctx) +ReturnedValue ObjectPrototype::method_valueOf(CallContext *ctx) { Scope scope(ctx); ScopedValue v(scope, ctx->callData->thisObject.toObject(ctx)); @@ -432,7 +432,7 @@ ReturnedValue ObjectPrototype::method_valueOf(SimpleCallContext *ctx) return v.asReturnedValue(); } -ReturnedValue ObjectPrototype::method_hasOwnProperty(SimpleCallContext *ctx) +ReturnedValue ObjectPrototype::method_hasOwnProperty(CallContext *ctx) { Scope scope(ctx); Scoped<String> P(scope, ctx->argument(0), Scoped<String>::Convert); @@ -447,7 +447,7 @@ ReturnedValue ObjectPrototype::method_hasOwnProperty(SimpleCallContext *ctx) return Encode(r); } -ReturnedValue ObjectPrototype::method_isPrototypeOf(SimpleCallContext *ctx) +ReturnedValue ObjectPrototype::method_isPrototypeOf(CallContext *ctx) { Scope scope(ctx); Scoped<Object> V(scope, ctx->argument(0)); @@ -466,7 +466,7 @@ ReturnedValue ObjectPrototype::method_isPrototypeOf(SimpleCallContext *ctx) return Encode(false); } -ReturnedValue ObjectPrototype::method_propertyIsEnumerable(SimpleCallContext *ctx) +ReturnedValue ObjectPrototype::method_propertyIsEnumerable(CallContext *ctx) { Scope scope(ctx); Scoped<String> p(scope, ctx->argument(0), Scoped<String>::Convert); @@ -481,7 +481,7 @@ ReturnedValue ObjectPrototype::method_propertyIsEnumerable(SimpleCallContext *ct return Encode(attrs.isEnumerable()); } -ReturnedValue ObjectPrototype::method_defineGetter(SimpleCallContext *ctx) +ReturnedValue ObjectPrototype::method_defineGetter(CallContext *ctx) { if (ctx->callData->argc < 2) return ctx->throwTypeError(); @@ -507,7 +507,7 @@ ReturnedValue ObjectPrototype::method_defineGetter(SimpleCallContext *ctx) return Encode::undefined(); } -ReturnedValue ObjectPrototype::method_defineSetter(SimpleCallContext *ctx) +ReturnedValue ObjectPrototype::method_defineSetter(CallContext *ctx) { if (ctx->callData->argc < 2) return ctx->throwTypeError(); @@ -533,7 +533,7 @@ ReturnedValue ObjectPrototype::method_defineSetter(SimpleCallContext *ctx) return Encode::undefined(); } -ReturnedValue ObjectPrototype::method_get_proto(SimpleCallContext *ctx) +ReturnedValue ObjectPrototype::method_get_proto(CallContext *ctx) { Scope scope(ctx); ScopedObject o(scope, ctx->callData->thisObject.asObject()); @@ -543,7 +543,7 @@ ReturnedValue ObjectPrototype::method_get_proto(SimpleCallContext *ctx) return o->prototype()->asReturnedValue(); } -ReturnedValue ObjectPrototype::method_set_proto(SimpleCallContext *ctx) +ReturnedValue ObjectPrototype::method_set_proto(CallContext *ctx) { Scope scope(ctx); Scoped<Object> o(scope, ctx->callData->thisObject); diff --git a/src/qml/jsruntime/qv4objectproto_p.h b/src/qml/jsruntime/qv4objectproto_p.h index b5dcd06032..0bd8072db8 100644 --- a/src/qml/jsruntime/qv4objectproto_p.h +++ b/src/qml/jsruntime/qv4objectproto_p.h @@ -64,32 +64,32 @@ struct ObjectPrototype: Object void init(ExecutionEngine *engine, ObjectRef ctor); - static ReturnedValue method_getPrototypeOf(SimpleCallContext *ctx); - static ReturnedValue method_getOwnPropertyDescriptor(SimpleCallContext *ctx); - static ReturnedValue method_getOwnPropertyNames(SimpleCallContext *context); - static ReturnedValue method_create(SimpleCallContext *ctx); - static ReturnedValue method_defineProperty(SimpleCallContext *ctx); - static ReturnedValue method_defineProperties(SimpleCallContext *ctx); - static ReturnedValue method_seal(SimpleCallContext *ctx); - static ReturnedValue method_freeze(SimpleCallContext *ctx); - static ReturnedValue method_preventExtensions(SimpleCallContext *ctx); - static ReturnedValue method_isSealed(SimpleCallContext *ctx); - static ReturnedValue method_isFrozen(SimpleCallContext *ctx); - static ReturnedValue method_isExtensible(SimpleCallContext *ctx); - static ReturnedValue method_keys(SimpleCallContext *ctx); - - static ReturnedValue method_toString(SimpleCallContext *ctx); - static ReturnedValue method_toLocaleString(SimpleCallContext *ctx); - static ReturnedValue method_valueOf(SimpleCallContext *ctx); - static ReturnedValue method_hasOwnProperty(SimpleCallContext *ctx); - static ReturnedValue method_isPrototypeOf(SimpleCallContext *ctx); - static ReturnedValue method_propertyIsEnumerable(SimpleCallContext *ctx); - - static ReturnedValue method_defineGetter(SimpleCallContext *ctx); - static ReturnedValue method_defineSetter(SimpleCallContext *ctx); - - static ReturnedValue method_get_proto(SimpleCallContext *ctx); - static ReturnedValue method_set_proto(SimpleCallContext *ctx); + static ReturnedValue method_getPrototypeOf(CallContext *ctx); + static ReturnedValue method_getOwnPropertyDescriptor(CallContext *ctx); + static ReturnedValue method_getOwnPropertyNames(CallContext *context); + static ReturnedValue method_create(CallContext *ctx); + static ReturnedValue method_defineProperty(CallContext *ctx); + static ReturnedValue method_defineProperties(CallContext *ctx); + static ReturnedValue method_seal(CallContext *ctx); + static ReturnedValue method_freeze(CallContext *ctx); + static ReturnedValue method_preventExtensions(CallContext *ctx); + static ReturnedValue method_isSealed(CallContext *ctx); + static ReturnedValue method_isFrozen(CallContext *ctx); + static ReturnedValue method_isExtensible(CallContext *ctx); + static ReturnedValue method_keys(CallContext *ctx); + + static ReturnedValue method_toString(CallContext *ctx); + static ReturnedValue method_toLocaleString(CallContext *ctx); + static ReturnedValue method_valueOf(CallContext *ctx); + static ReturnedValue method_hasOwnProperty(CallContext *ctx); + static ReturnedValue method_isPrototypeOf(CallContext *ctx); + static ReturnedValue method_propertyIsEnumerable(CallContext *ctx); + + static ReturnedValue method_defineGetter(CallContext *ctx); + static ReturnedValue method_defineSetter(CallContext *ctx); + + static ReturnedValue method_get_proto(CallContext *ctx); + static ReturnedValue method_set_proto(CallContext *ctx); static void toPropertyDescriptor(ExecutionContext *ctx, const ValueRef v, Property *desc, PropertyAttributes *attrs); static ReturnedValue fromPropertyDescriptor(ExecutionContext *ctx, const Property *desc, PropertyAttributes attrs); diff --git a/src/qml/jsruntime/qv4qobjectwrapper.cpp b/src/qml/jsruntime/qv4qobjectwrapper.cpp index 4537b6c941..578c7310f2 100644 --- a/src/qml/jsruntime/qv4qobjectwrapper.cpp +++ b/src/qml/jsruntime/qv4qobjectwrapper.cpp @@ -833,7 +833,7 @@ struct QObjectSlotDispatcher : public QtPrivate::QSlotObjectBase } // namespace QV4 -ReturnedValue QObjectWrapper::method_connect(SimpleCallContext *ctx) +ReturnedValue QObjectWrapper::method_connect(CallContext *ctx) { if (ctx->callData->argc == 0) V4THROW_ERROR("Function.prototype.connect: no arguments given"); @@ -879,7 +879,7 @@ ReturnedValue QObjectWrapper::method_connect(SimpleCallContext *ctx) return Encode::undefined(); } -ReturnedValue QObjectWrapper::method_disconnect(SimpleCallContext *ctx) +ReturnedValue QObjectWrapper::method_disconnect(CallContext *ctx) { if (ctx->callData->argc == 0) V4THROW_ERROR("Function.prototype.disconnect: no arguments given"); diff --git a/src/qml/jsruntime/qv4qobjectwrapper_p.h b/src/qml/jsruntime/qv4qobjectwrapper_p.h index eb3cf15bff..f6c333f401 100644 --- a/src/qml/jsruntime/qv4qobjectwrapper_p.h +++ b/src/qml/jsruntime/qv4qobjectwrapper_p.h @@ -121,8 +121,8 @@ private: static_cast<QObjectWrapper *>(that)->~QObjectWrapper(); } - static ReturnedValue method_connect(SimpleCallContext *ctx); - static ReturnedValue method_disconnect(SimpleCallContext *ctx); + static ReturnedValue method_connect(CallContext *ctx); + static ReturnedValue method_disconnect(CallContext *ctx); }; struct QObjectMethod : public QV4::FunctionObject diff --git a/src/qml/jsruntime/qv4regexpobject.cpp b/src/qml/jsruntime/qv4regexpobject.cpp index c2d04cc7ed..a8597229c4 100644 --- a/src/qml/jsruntime/qv4regexpobject.cpp +++ b/src/qml/jsruntime/qv4regexpobject.cpp @@ -314,7 +314,7 @@ void RegExpPrototype::init(ExecutionEngine *engine, ObjectRef ctor) defineDefaultProperty(QStringLiteral("compile"), method_compile, 2); } -ReturnedValue RegExpPrototype::method_exec(SimpleCallContext *ctx) +ReturnedValue RegExpPrototype::method_exec(CallContext *ctx) { Scope scope(ctx); Scoped<RegExpObject> r(scope, ctx->callData->thisObject.as<RegExpObject>()); @@ -361,14 +361,14 @@ ReturnedValue RegExpPrototype::method_exec(SimpleCallContext *ctx) return array.asReturnedValue(); } -ReturnedValue RegExpPrototype::method_test(SimpleCallContext *ctx) +ReturnedValue RegExpPrototype::method_test(CallContext *ctx) { Scope scope(ctx); ScopedValue r(scope, method_exec(ctx)); return Encode(!r->isNull()); } -ReturnedValue RegExpPrototype::method_toString(SimpleCallContext *ctx) +ReturnedValue RegExpPrototype::method_toString(CallContext *ctx) { Scope scope(ctx); Scoped<RegExpObject> r(scope, ctx->callData->thisObject.as<RegExpObject>()); @@ -378,7 +378,7 @@ ReturnedValue RegExpPrototype::method_toString(SimpleCallContext *ctx) return ctx->engine->newString(r->toString())->asReturnedValue(); } -ReturnedValue RegExpPrototype::method_compile(SimpleCallContext *ctx) +ReturnedValue RegExpPrototype::method_compile(CallContext *ctx) { Scope scope(ctx); Scoped<RegExpObject> r(scope, ctx->callData->thisObject.as<RegExpObject>()); diff --git a/src/qml/jsruntime/qv4regexpobject_p.h b/src/qml/jsruntime/qv4regexpobject_p.h index 70bc9476e0..0129f8d396 100644 --- a/src/qml/jsruntime/qv4regexpobject_p.h +++ b/src/qml/jsruntime/qv4regexpobject_p.h @@ -115,10 +115,10 @@ struct RegExpPrototype: RegExpObject RegExpPrototype(InternalClass *ic): RegExpObject(ic) {} void init(ExecutionEngine *engine, ObjectRef ctor); - static ReturnedValue method_exec(SimpleCallContext *ctx); - static ReturnedValue method_test(SimpleCallContext *ctx); - static ReturnedValue method_toString(SimpleCallContext *ctx); - static ReturnedValue method_compile(SimpleCallContext *ctx); + static ReturnedValue method_exec(CallContext *ctx); + static ReturnedValue method_test(CallContext *ctx); + static ReturnedValue method_toString(CallContext *ctx); + static ReturnedValue method_compile(CallContext *ctx); }; } diff --git a/src/qml/jsruntime/qv4scopedvalue_p.h b/src/qml/jsruntime/qv4scopedvalue_p.h index 094f5ce2bb..17a19b5201 100644 --- a/src/qml/jsruntime/qv4scopedvalue_p.h +++ b/src/qml/jsruntime/qv4scopedvalue_p.h @@ -741,7 +741,7 @@ inline WeakValue &WeakValue::operator=(Returned<T> *obj) return operator=(QV4::Value::fromManaged(obj->getPointer()).asReturnedValue()); } -inline ReturnedValue SimpleCallContext::argument(int i) { +inline ReturnedValue CallContext::argument(int i) { return i < callData->argc ? callData->args[i].asReturnedValue() : Primitive::undefinedValue().asReturnedValue(); } diff --git a/src/qml/jsruntime/qv4sequenceobject.cpp b/src/qml/jsruntime/qv4sequenceobject.cpp index 8d2a399b70..26e4dcb8a2 100644 --- a/src/qml/jsruntime/qv4sequenceobject.cpp +++ b/src/qml/jsruntime/qv4sequenceobject.cpp @@ -379,7 +379,7 @@ public: QV4::ValueRef m_compareFn; }; - void sort(QV4::SimpleCallContext *ctx) + void sort(QV4::CallContext *ctx) { if (m_isReference) { if (!m_object) @@ -400,7 +400,7 @@ public: storeReference(); } - static QV4::ReturnedValue method_get_length(QV4::SimpleCallContext *ctx) + static QV4::ReturnedValue method_get_length(QV4::CallContext *ctx) { QV4::Scope scope(ctx); QV4::Scoped<QQmlSequence<Container> > This(scope, ctx->callData->thisObject.as<QQmlSequence<Container> >()); @@ -415,7 +415,7 @@ public: return QV4::Encode(This->m_container.count()); } - static QV4::ReturnedValue method_set_length(QV4::SimpleCallContext* ctx) + static QV4::ReturnedValue method_set_length(QV4::CallContext* ctx) { QV4::Scope scope(ctx); QV4::Scoped<QQmlSequence<Container> > This(scope, ctx->callData->thisObject.as<QQmlSequence<Container> >()); @@ -553,7 +553,7 @@ void SequencePrototype::init() defineDefaultProperty(engine()->id_valueOf, method_valueOf, 0); } -QV4::ReturnedValue SequencePrototype::method_sort(QV4::SimpleCallContext *ctx) +QV4::ReturnedValue SequencePrototype::method_sort(QV4::CallContext *ctx) { QV4::Scope scope(ctx); QV4::ScopedObject o(scope, ctx->callData->thisObject); diff --git a/src/qml/jsruntime/qv4sequenceobject_p.h b/src/qml/jsruntime/qv4sequenceobject_p.h index 3bbb86f231..54a96863df 100644 --- a/src/qml/jsruntime/qv4sequenceobject_p.h +++ b/src/qml/jsruntime/qv4sequenceobject_p.h @@ -69,12 +69,12 @@ struct SequencePrototype : public QV4::Object void init(); - static ReturnedValue method_valueOf(QV4::SimpleCallContext *ctx) + static ReturnedValue method_valueOf(QV4::CallContext *ctx) { return ctx->callData->thisObject.toString(ctx)->asReturnedValue(); } - static ReturnedValue method_sort(QV4::SimpleCallContext *ctx); + static ReturnedValue method_sort(QV4::CallContext *ctx); static bool isSequenceType(int sequenceTypeId); static ReturnedValue newSequence(QV4::ExecutionEngine *engine, int sequenceTypeId, QObject *object, int propertyIndex, bool *succeeded); diff --git a/src/qml/jsruntime/qv4stringobject.cpp b/src/qml/jsruntime/qv4stringobject.cpp index 7ba7a38cc0..bff8f1f9cd 100644 --- a/src/qml/jsruntime/qv4stringobject.cpp +++ b/src/qml/jsruntime/qv4stringobject.cpp @@ -246,7 +246,7 @@ static QString getThisString(ExecutionContext *ctx) return t->toQString(); } -ReturnedValue StringPrototype::method_toString(SimpleCallContext *context) +ReturnedValue StringPrototype::method_toString(CallContext *context) { if (context->callData->thisObject.isString()) return context->callData->thisObject.asReturnedValue(); @@ -257,7 +257,7 @@ ReturnedValue StringPrototype::method_toString(SimpleCallContext *context) return o->value.asReturnedValue(); } -ReturnedValue StringPrototype::method_charAt(SimpleCallContext *context) +ReturnedValue StringPrototype::method_charAt(CallContext *context) { const QString str = getThisString(context); if (context->engine->hasException) @@ -274,7 +274,7 @@ ReturnedValue StringPrototype::method_charAt(SimpleCallContext *context) return context->engine->newString(result)->asReturnedValue(); } -ReturnedValue StringPrototype::method_charCodeAt(SimpleCallContext *context) +ReturnedValue StringPrototype::method_charCodeAt(CallContext *context) { const QString str = getThisString(context); if (context->engine->hasException) @@ -291,7 +291,7 @@ ReturnedValue StringPrototype::method_charCodeAt(SimpleCallContext *context) return Encode(qSNaN()); } -ReturnedValue StringPrototype::method_concat(SimpleCallContext *context) +ReturnedValue StringPrototype::method_concat(CallContext *context) { Scope scope(context); @@ -311,7 +311,7 @@ ReturnedValue StringPrototype::method_concat(SimpleCallContext *context) return context->engine->newString(value)->asReturnedValue(); } -ReturnedValue StringPrototype::method_indexOf(SimpleCallContext *context) +ReturnedValue StringPrototype::method_indexOf(CallContext *context) { QString value = getThisString(context); if (context->engine->hasException) @@ -332,7 +332,7 @@ ReturnedValue StringPrototype::method_indexOf(SimpleCallContext *context) return Encode(index); } -ReturnedValue StringPrototype::method_lastIndexOf(SimpleCallContext *context) +ReturnedValue StringPrototype::method_lastIndexOf(CallContext *context) { Scope scope(context); @@ -360,7 +360,7 @@ ReturnedValue StringPrototype::method_lastIndexOf(SimpleCallContext *context) return Encode(index); } -ReturnedValue StringPrototype::method_localeCompare(SimpleCallContext *context) +ReturnedValue StringPrototype::method_localeCompare(CallContext *context) { Scope scope(context); const QString value = getThisString(context); @@ -372,7 +372,7 @@ ReturnedValue StringPrototype::method_localeCompare(SimpleCallContext *context) return Encode(QString::localeAwareCompare(value, that)); } -ReturnedValue StringPrototype::method_match(SimpleCallContext *context) +ReturnedValue StringPrototype::method_match(CallContext *context) { if (context->callData->thisObject.isUndefined() || context->callData->thisObject.isNull()) return context->throwTypeError(); @@ -482,7 +482,7 @@ static void appendReplacementString(QString *result, const QString &input, const } } -ReturnedValue StringPrototype::method_replace(SimpleCallContext *ctx) +ReturnedValue StringPrototype::method_replace(CallContext *ctx) { Scope scope(ctx); QString string; @@ -595,7 +595,7 @@ ReturnedValue StringPrototype::method_replace(SimpleCallContext *ctx) return ctx->engine->newString(result)->asReturnedValue(); } -ReturnedValue StringPrototype::method_search(SimpleCallContext *ctx) +ReturnedValue StringPrototype::method_search(CallContext *ctx) { Scope scope(ctx); QString string = getThisString(ctx); @@ -619,7 +619,7 @@ ReturnedValue StringPrototype::method_search(SimpleCallContext *ctx) return Encode(result); } -ReturnedValue StringPrototype::method_slice(SimpleCallContext *ctx) +ReturnedValue StringPrototype::method_slice(CallContext *ctx) { const QString text = getThisString(ctx); if (ctx->engine->hasException) @@ -648,7 +648,7 @@ ReturnedValue StringPrototype::method_slice(SimpleCallContext *ctx) return ctx->engine->newString(text.mid(intStart, count))->asReturnedValue(); } -ReturnedValue StringPrototype::method_split(SimpleCallContext *ctx) +ReturnedValue StringPrototype::method_split(CallContext *ctx) { Scope scope(ctx); QString text = getThisString(ctx); @@ -729,7 +729,7 @@ ReturnedValue StringPrototype::method_split(SimpleCallContext *ctx) return array.asReturnedValue(); } -ReturnedValue StringPrototype::method_substr(SimpleCallContext *context) +ReturnedValue StringPrototype::method_substr(CallContext *context) { const QString value = getThisString(context); if (context->engine->hasException) @@ -754,7 +754,7 @@ ReturnedValue StringPrototype::method_substr(SimpleCallContext *context) return context->engine->newString(value.mid(x, y))->asReturnedValue(); } -ReturnedValue StringPrototype::method_substring(SimpleCallContext *context) +ReturnedValue StringPrototype::method_substring(CallContext *context) { QString value = getThisString(context); if (context->engine->hasException) @@ -795,7 +795,7 @@ ReturnedValue StringPrototype::method_substring(SimpleCallContext *context) return context->engine->newString(value.mid(x, y))->asReturnedValue(); } -ReturnedValue StringPrototype::method_toLowerCase(SimpleCallContext *ctx) +ReturnedValue StringPrototype::method_toLowerCase(CallContext *ctx) { QString value = getThisString(ctx); if (ctx->engine->hasException) @@ -803,12 +803,12 @@ ReturnedValue StringPrototype::method_toLowerCase(SimpleCallContext *ctx) return ctx->engine->newString(value.toLower())->asReturnedValue(); } -ReturnedValue StringPrototype::method_toLocaleLowerCase(SimpleCallContext *ctx) +ReturnedValue StringPrototype::method_toLocaleLowerCase(CallContext *ctx) { return method_toLowerCase(ctx); } -ReturnedValue StringPrototype::method_toUpperCase(SimpleCallContext *ctx) +ReturnedValue StringPrototype::method_toUpperCase(CallContext *ctx) { QString value = getThisString(ctx); if (ctx->engine->hasException) @@ -816,12 +816,12 @@ ReturnedValue StringPrototype::method_toUpperCase(SimpleCallContext *ctx) return ctx->engine->newString(value.toUpper())->asReturnedValue(); } -ReturnedValue StringPrototype::method_toLocaleUpperCase(SimpleCallContext *ctx) +ReturnedValue StringPrototype::method_toLocaleUpperCase(CallContext *ctx) { return method_toUpperCase(ctx); } -ReturnedValue StringPrototype::method_fromCharCode(SimpleCallContext *context) +ReturnedValue StringPrototype::method_fromCharCode(CallContext *context) { QString str(context->callData->argc, Qt::Uninitialized); QChar *ch = str.data(); @@ -832,7 +832,7 @@ ReturnedValue StringPrototype::method_fromCharCode(SimpleCallContext *context) return context->engine->newString(str)->asReturnedValue(); } -ReturnedValue StringPrototype::method_trim(SimpleCallContext *ctx) +ReturnedValue StringPrototype::method_trim(CallContext *ctx) { QString s = getThisString(ctx); if (ctx->engine->hasException) diff --git a/src/qml/jsruntime/qv4stringobject_p.h b/src/qml/jsruntime/qv4stringobject_p.h index c67f933479..e8e46b85e7 100644 --- a/src/qml/jsruntime/qv4stringobject_p.h +++ b/src/qml/jsruntime/qv4stringobject_p.h @@ -80,26 +80,26 @@ struct StringPrototype: StringObject StringPrototype(InternalClass *ic): StringObject(ic) {} void init(ExecutionEngine *engine, ObjectRef ctor); - static ReturnedValue method_toString(SimpleCallContext *context); - static ReturnedValue method_charAt(SimpleCallContext *context); - static ReturnedValue method_charCodeAt(SimpleCallContext *context); - static ReturnedValue method_concat(SimpleCallContext *context); - static ReturnedValue method_indexOf(SimpleCallContext *context); - static ReturnedValue method_lastIndexOf(SimpleCallContext *context); - static ReturnedValue method_localeCompare(SimpleCallContext *context); - static ReturnedValue method_match(SimpleCallContext *context); - static ReturnedValue method_replace(SimpleCallContext *ctx); - static ReturnedValue method_search(SimpleCallContext *ctx); - static ReturnedValue method_slice(SimpleCallContext *ctx); - static ReturnedValue method_split(SimpleCallContext *ctx); - static ReturnedValue method_substr(SimpleCallContext *context); - static ReturnedValue method_substring(SimpleCallContext *context); - static ReturnedValue method_toLowerCase(SimpleCallContext *ctx); - static ReturnedValue method_toLocaleLowerCase(SimpleCallContext *ctx); - static ReturnedValue method_toUpperCase(SimpleCallContext *ctx); - static ReturnedValue method_toLocaleUpperCase(SimpleCallContext *ctx); - static ReturnedValue method_fromCharCode(SimpleCallContext *context); - static ReturnedValue method_trim(SimpleCallContext *ctx); + static ReturnedValue method_toString(CallContext *context); + static ReturnedValue method_charAt(CallContext *context); + static ReturnedValue method_charCodeAt(CallContext *context); + static ReturnedValue method_concat(CallContext *context); + static ReturnedValue method_indexOf(CallContext *context); + static ReturnedValue method_lastIndexOf(CallContext *context); + static ReturnedValue method_localeCompare(CallContext *context); + static ReturnedValue method_match(CallContext *context); + static ReturnedValue method_replace(CallContext *ctx); + static ReturnedValue method_search(CallContext *ctx); + static ReturnedValue method_slice(CallContext *ctx); + static ReturnedValue method_split(CallContext *ctx); + static ReturnedValue method_substr(CallContext *context); + static ReturnedValue method_substring(CallContext *context); + static ReturnedValue method_toLowerCase(CallContext *ctx); + static ReturnedValue method_toLocaleLowerCase(CallContext *ctx); + static ReturnedValue method_toUpperCase(CallContext *ctx); + static ReturnedValue method_toLocaleUpperCase(CallContext *ctx); + static ReturnedValue method_fromCharCode(CallContext *context); + static ReturnedValue method_trim(CallContext *ctx); }; } diff --git a/src/qml/jsruntime/qv4variantobject.cpp b/src/qml/jsruntime/qv4variantobject.cpp index a37da31782..470e8e206b 100644 --- a/src/qml/jsruntime/qv4variantobject.cpp +++ b/src/qml/jsruntime/qv4variantobject.cpp @@ -153,7 +153,7 @@ void VariantPrototype::init() defineDefaultProperty(engine()->id_toString, method_toString, 0); } -QV4::ReturnedValue VariantPrototype::method_preserve(SimpleCallContext *ctx) +QV4::ReturnedValue VariantPrototype::method_preserve(CallContext *ctx) { Scope scope(ctx); Scoped<VariantObject> o(scope, ctx->callData->thisObject.as<QV4::VariantObject>()); @@ -162,7 +162,7 @@ QV4::ReturnedValue VariantPrototype::method_preserve(SimpleCallContext *ctx) return Encode::undefined(); } -QV4::ReturnedValue VariantPrototype::method_destroy(SimpleCallContext *ctx) +QV4::ReturnedValue VariantPrototype::method_destroy(CallContext *ctx) { Scope scope(ctx); Scoped<VariantObject> o(scope, ctx->callData->thisObject.as<QV4::VariantObject>()); @@ -174,7 +174,7 @@ QV4::ReturnedValue VariantPrototype::method_destroy(SimpleCallContext *ctx) return Encode::undefined(); } -QV4::ReturnedValue VariantPrototype::method_toString(SimpleCallContext *ctx) +QV4::ReturnedValue VariantPrototype::method_toString(CallContext *ctx) { Scope scope(ctx); Scoped<VariantObject> o(scope, ctx->callData->thisObject.as<QV4::VariantObject>()); @@ -186,7 +186,7 @@ QV4::ReturnedValue VariantPrototype::method_toString(SimpleCallContext *ctx) return Encode(ctx->engine->newString(result)); } -QV4::ReturnedValue VariantPrototype::method_valueOf(SimpleCallContext *ctx) +QV4::ReturnedValue VariantPrototype::method_valueOf(CallContext *ctx) { Scope scope(ctx); Scoped<VariantObject> o(scope, ctx->callData->thisObject.as<QV4::VariantObject>()); diff --git a/src/qml/jsruntime/qv4variantobject_p.h b/src/qml/jsruntime/qv4variantobject_p.h index 4d852142aa..4e14839184 100644 --- a/src/qml/jsruntime/qv4variantobject_p.h +++ b/src/qml/jsruntime/qv4variantobject_p.h @@ -89,10 +89,10 @@ public: void init(); - static ReturnedValue method_preserve(SimpleCallContext *ctx); - static ReturnedValue method_destroy(SimpleCallContext *ctx); - static ReturnedValue method_toString(SimpleCallContext *ctx); - static ReturnedValue method_valueOf(SimpleCallContext *ctx); + static ReturnedValue method_preserve(CallContext *ctx); + static ReturnedValue method_destroy(CallContext *ctx); + static ReturnedValue method_toString(CallContext *ctx); + static ReturnedValue method_valueOf(CallContext *ctx); }; } diff --git a/src/qml/jsruntime/qv4vme_moth.cpp b/src/qml/jsruntime/qv4vme_moth.cpp index 74a42b6f2f..3121f178a0 100644 --- a/src/qml/jsruntime/qv4vme_moth.cpp +++ b/src/qml/jsruntime/qv4vme_moth.cpp @@ -215,7 +215,7 @@ QV4::ReturnedValue VME::run(QV4::ExecutionContext *context, const uchar *code, QV4::ExecutionContext *scope = context; int i = 0; while (scope) { - if (scope->type >= QV4::ExecutionContext::Type_CallContext) { + if (scope->type >= QV4::ExecutionContext::Type_SimpleCallContext) { QV4::CallContext *cc = static_cast<QV4::CallContext *>(scope); scopes[2*i + 2] = cc->callData->args; scopes[2*i + 3] = cc->locals; |