diff options
Diffstat (limited to 'src/qml/jsruntime')
29 files changed, 313 insertions, 330 deletions
diff --git a/src/qml/jsruntime/qv4arrayobject.cpp b/src/qml/jsruntime/qv4arrayobject.cpp index ce6bdca627..c066c3b533 100644 --- a/src/qml/jsruntime/qv4arrayobject.cpp +++ b/src/qml/jsruntime/qv4arrayobject.cpp @@ -91,33 +91,33 @@ ArrayPrototype::ArrayPrototype(InternalClass *ic) { } -void ArrayPrototype::init(ExecutionContext *ctx, const Value &ctor) +void ArrayPrototype::init(ExecutionEngine *engine, const Value &ctor) { - ctor.objectValue()->defineReadonlyProperty(ctx->engine->id_length, Value::fromInt32(1)); - ctor.objectValue()->defineReadonlyProperty(ctx->engine->id_prototype, Value::fromObject(this)); - ctor.objectValue()->defineDefaultProperty(ctx, QStringLiteral("isArray"), method_isArray, 1); - defineDefaultProperty(ctx, QStringLiteral("constructor"), ctor); - defineDefaultProperty(ctx, QStringLiteral("toString"), method_toString, 0); - defineDefaultProperty(ctx, QStringLiteral("toLocaleString"), method_toLocaleString, 0); - defineDefaultProperty(ctx, QStringLiteral("concat"), method_concat, 1); - defineDefaultProperty(ctx, QStringLiteral("join"), method_join, 1); - defineDefaultProperty(ctx, QStringLiteral("pop"), method_pop, 0); - defineDefaultProperty(ctx, QStringLiteral("push"), method_push, 1); - defineDefaultProperty(ctx, QStringLiteral("reverse"), method_reverse, 0); - defineDefaultProperty(ctx, QStringLiteral("shift"), method_shift, 0); - defineDefaultProperty(ctx, QStringLiteral("slice"), method_slice, 2); - defineDefaultProperty(ctx, QStringLiteral("sort"), method_sort, 1); - defineDefaultProperty(ctx, QStringLiteral("splice"), method_splice, 2); - defineDefaultProperty(ctx, QStringLiteral("unshift"), method_unshift, 1); - defineDefaultProperty(ctx, QStringLiteral("indexOf"), method_indexOf, 1); - defineDefaultProperty(ctx, QStringLiteral("lastIndexOf"), method_lastIndexOf, 1); - defineDefaultProperty(ctx, QStringLiteral("every"), method_every, 1); - defineDefaultProperty(ctx, QStringLiteral("some"), method_some, 1); - defineDefaultProperty(ctx, QStringLiteral("forEach"), method_forEach, 1); - defineDefaultProperty(ctx, QStringLiteral("map"), method_map, 1); - defineDefaultProperty(ctx, QStringLiteral("filter"), method_filter, 1); - defineDefaultProperty(ctx, QStringLiteral("reduce"), method_reduce, 1); - defineDefaultProperty(ctx, QStringLiteral("reduceRight"), method_reduceRight, 1); + ctor.objectValue()->defineReadonlyProperty(engine->id_length, Value::fromInt32(1)); + ctor.objectValue()->defineReadonlyProperty(engine->id_prototype, Value::fromObject(this)); + ctor.objectValue()->defineDefaultProperty(QStringLiteral("isArray"), method_isArray, 1); + defineDefaultProperty(QStringLiteral("constructor"), ctor); + defineDefaultProperty(QStringLiteral("toString"), method_toString, 0); + defineDefaultProperty(QStringLiteral("toLocaleString"), method_toLocaleString, 0); + defineDefaultProperty(QStringLiteral("concat"), method_concat, 1); + defineDefaultProperty(QStringLiteral("join"), method_join, 1); + defineDefaultProperty(QStringLiteral("pop"), method_pop, 0); + defineDefaultProperty(QStringLiteral("push"), method_push, 1); + defineDefaultProperty(QStringLiteral("reverse"), method_reverse, 0); + defineDefaultProperty(QStringLiteral("shift"), method_shift, 0); + defineDefaultProperty(QStringLiteral("slice"), method_slice, 2); + defineDefaultProperty(QStringLiteral("sort"), method_sort, 1); + defineDefaultProperty(QStringLiteral("splice"), method_splice, 2); + defineDefaultProperty(QStringLiteral("unshift"), method_unshift, 1); + defineDefaultProperty(QStringLiteral("indexOf"), method_indexOf, 1); + defineDefaultProperty(QStringLiteral("lastIndexOf"), method_lastIndexOf, 1); + defineDefaultProperty(QStringLiteral("every"), method_every, 1); + defineDefaultProperty(QStringLiteral("some"), method_some, 1); + defineDefaultProperty(QStringLiteral("forEach"), method_forEach, 1); + defineDefaultProperty(QStringLiteral("map"), method_map, 1); + defineDefaultProperty(QStringLiteral("filter"), method_filter, 1); + defineDefaultProperty(QStringLiteral("reduce"), method_reduce, 1); + defineDefaultProperty(QStringLiteral("reduceRight"), method_reduceRight, 1); } uint ArrayPrototype::getLength(ExecutionContext *ctx, Object *o) diff --git a/src/qml/jsruntime/qv4arrayobject_p.h b/src/qml/jsruntime/qv4arrayobject_p.h index a38a87f1f3..62a731f4e0 100644 --- a/src/qml/jsruntime/qv4arrayobject_p.h +++ b/src/qml/jsruntime/qv4arrayobject_p.h @@ -62,7 +62,7 @@ struct ArrayPrototype: ArrayObject { ArrayPrototype(InternalClass *ic); - void init(ExecutionContext *ctx, const Value &ctor); + void init(ExecutionEngine *engine, const Value &ctor); static uint getLength(ExecutionContext *ctx, Object *o); diff --git a/src/qml/jsruntime/qv4booleanobject.cpp b/src/qml/jsruntime/qv4booleanobject.cpp index 86ddebd6c3..28589e4104 100644 --- a/src/qml/jsruntime/qv4booleanobject.cpp +++ b/src/qml/jsruntime/qv4booleanobject.cpp @@ -63,13 +63,13 @@ ReturnedValue BooleanCtor::call(Managed *, CallData *callData) return Encode(value); } -void BooleanPrototype::init(ExecutionContext *ctx, const Value &ctor) +void BooleanPrototype::init(ExecutionEngine *engine, const Value &ctor) { - ctor.objectValue()->defineReadonlyProperty(ctx->engine->id_length, Value::fromInt32(1)); - ctor.objectValue()->defineReadonlyProperty(ctx->engine->id_prototype, Value::fromObject(this)); - defineDefaultProperty(ctx, QStringLiteral("constructor"), ctor); - defineDefaultProperty(ctx, QStringLiteral("toString"), method_toString); - defineDefaultProperty(ctx, QStringLiteral("valueOf"), method_valueOf); + ctor.objectValue()->defineReadonlyProperty(engine->id_length, Value::fromInt32(1)); + ctor.objectValue()->defineReadonlyProperty(engine->id_prototype, Value::fromObject(this)); + defineDefaultProperty(QStringLiteral("constructor"), ctor); + defineDefaultProperty(QStringLiteral("toString"), method_toString); + defineDefaultProperty(QStringLiteral("valueOf"), method_valueOf); } ReturnedValue BooleanPrototype::method_toString(SimpleCallContext *ctx) diff --git a/src/qml/jsruntime/qv4booleanobject_p.h b/src/qml/jsruntime/qv4booleanobject_p.h index ef74834a5c..a7b85deace 100644 --- a/src/qml/jsruntime/qv4booleanobject_p.h +++ b/src/qml/jsruntime/qv4booleanobject_p.h @@ -61,7 +61,7 @@ struct BooleanCtor: FunctionObject struct BooleanPrototype: BooleanObject { BooleanPrototype(InternalClass *ic): BooleanObject(ic) {} - void init(ExecutionContext *ctx, const Value &ctor); + void init(ExecutionEngine *engine, const Value &ctor); static ReturnedValue method_toString(SimpleCallContext *ctx); static ReturnedValue method_valueOf(SimpleCallContext *ctx); diff --git a/src/qml/jsruntime/qv4dateobject.cpp b/src/qml/jsruntime/qv4dateobject.cpp index 14e54a2e53..0a8aca4a01 100644 --- a/src/qml/jsruntime/qv4dateobject.cpp +++ b/src/qml/jsruntime/qv4dateobject.cpp @@ -701,63 +701,63 @@ ReturnedValue DateCtor::call(Managed *m, CallData *) return Value::fromString(m->engine()->current, ToString(t)).asReturnedValue(); } -void DatePrototype::init(ExecutionContext *ctx, const Value &ctor) +void DatePrototype::init(ExecutionEngine *engine, const Value &ctor) { - ctor.objectValue()->defineReadonlyProperty(ctx->engine->id_prototype, Value::fromObject(this)); - ctor.objectValue()->defineReadonlyProperty(ctx->engine->id_length, Value::fromInt32(7)); + ctor.objectValue()->defineReadonlyProperty(engine->id_prototype, Value::fromObject(this)); + ctor.objectValue()->defineReadonlyProperty(engine->id_length, Value::fromInt32(7)); LocalTZA = getLocalTZA(); - ctor.objectValue()->defineDefaultProperty(ctx, QStringLiteral("parse"), method_parse, 1); - ctor.objectValue()->defineDefaultProperty(ctx, QStringLiteral("UTC"), method_UTC, 7); - ctor.objectValue()->defineDefaultProperty(ctx, QStringLiteral("now"), method_now, 0); - - defineDefaultProperty(ctx, QStringLiteral("constructor"), ctor); - defineDefaultProperty(ctx, QStringLiteral("toString"), method_toString, 0); - defineDefaultProperty(ctx, QStringLiteral("toDateString"), method_toDateString, 0); - defineDefaultProperty(ctx, QStringLiteral("toTimeString"), method_toTimeString, 0); - defineDefaultProperty(ctx, QStringLiteral("toLocaleString"), method_toLocaleString, 0); - defineDefaultProperty(ctx, QStringLiteral("toLocaleDateString"), method_toLocaleDateString, 0); - defineDefaultProperty(ctx, QStringLiteral("toLocaleTimeString"), method_toLocaleTimeString, 0); - defineDefaultProperty(ctx, QStringLiteral("valueOf"), method_valueOf, 0); - defineDefaultProperty(ctx, QStringLiteral("getTime"), method_getTime, 0); - defineDefaultProperty(ctx, QStringLiteral("getYear"), method_getYear, 0); - defineDefaultProperty(ctx, QStringLiteral("getFullYear"), method_getFullYear, 0); - defineDefaultProperty(ctx, QStringLiteral("getUTCFullYear"), method_getUTCFullYear, 0); - defineDefaultProperty(ctx, QStringLiteral("getMonth"), method_getMonth, 0); - defineDefaultProperty(ctx, QStringLiteral("getUTCMonth"), method_getUTCMonth, 0); - defineDefaultProperty(ctx, QStringLiteral("getDate"), method_getDate, 0); - defineDefaultProperty(ctx, QStringLiteral("getUTCDate"), method_getUTCDate, 0); - defineDefaultProperty(ctx, QStringLiteral("getDay"), method_getDay, 0); - defineDefaultProperty(ctx, QStringLiteral("getUTCDay"), method_getUTCDay, 0); - defineDefaultProperty(ctx, QStringLiteral("getHours"), method_getHours, 0); - defineDefaultProperty(ctx, QStringLiteral("getUTCHours"), method_getUTCHours, 0); - defineDefaultProperty(ctx, QStringLiteral("getMinutes"), method_getMinutes, 0); - defineDefaultProperty(ctx, QStringLiteral("getUTCMinutes"), method_getUTCMinutes, 0); - defineDefaultProperty(ctx, QStringLiteral("getSeconds"), method_getSeconds, 0); - defineDefaultProperty(ctx, QStringLiteral("getUTCSeconds"), method_getUTCSeconds, 0); - defineDefaultProperty(ctx, QStringLiteral("getMilliseconds"), method_getMilliseconds, 0); - defineDefaultProperty(ctx, QStringLiteral("getUTCMilliseconds"), method_getUTCMilliseconds, 0); - defineDefaultProperty(ctx, QStringLiteral("getTimezoneOffset"), method_getTimezoneOffset, 0); - defineDefaultProperty(ctx, QStringLiteral("setTime"), method_setTime, 1); - defineDefaultProperty(ctx, QStringLiteral("setMilliseconds"), method_setMilliseconds, 1); - defineDefaultProperty(ctx, QStringLiteral("setUTCMilliseconds"), method_setUTCMilliseconds, 1); - defineDefaultProperty(ctx, QStringLiteral("setSeconds"), method_setSeconds, 2); - defineDefaultProperty(ctx, QStringLiteral("setUTCSeconds"), method_setUTCSeconds, 2); - defineDefaultProperty(ctx, QStringLiteral("setMinutes"), method_setMinutes, 3); - defineDefaultProperty(ctx, QStringLiteral("setUTCMinutes"), method_setUTCMinutes, 3); - defineDefaultProperty(ctx, QStringLiteral("setHours"), method_setHours, 4); - defineDefaultProperty(ctx, QStringLiteral("setUTCHours"), method_setUTCHours, 4); - defineDefaultProperty(ctx, QStringLiteral("setDate"), method_setDate, 1); - defineDefaultProperty(ctx, QStringLiteral("setUTCDate"), method_setUTCDate, 1); - defineDefaultProperty(ctx, QStringLiteral("setMonth"), method_setMonth, 2); - defineDefaultProperty(ctx, QStringLiteral("setUTCMonth"), method_setUTCMonth, 2); - defineDefaultProperty(ctx, QStringLiteral("setYear"), method_setYear, 1); - defineDefaultProperty(ctx, QStringLiteral("setFullYear"), method_setFullYear, 3); - defineDefaultProperty(ctx, QStringLiteral("setUTCFullYear"), method_setUTCFullYear, 3); - defineDefaultProperty(ctx, QStringLiteral("toUTCString"), method_toUTCString, 0); - defineDefaultProperty(ctx, QStringLiteral("toGMTString"), method_toUTCString, 0); - defineDefaultProperty(ctx, QStringLiteral("toISOString"), method_toISOString, 0); - defineDefaultProperty(ctx, QStringLiteral("toJSON"), method_toJSON, 1); + ctor.objectValue()->defineDefaultProperty(QStringLiteral("parse"), method_parse, 1); + ctor.objectValue()->defineDefaultProperty(QStringLiteral("UTC"), method_UTC, 7); + ctor.objectValue()->defineDefaultProperty(QStringLiteral("now"), method_now, 0); + + defineDefaultProperty(QStringLiteral("constructor"), ctor); + defineDefaultProperty(QStringLiteral("toString"), method_toString, 0); + defineDefaultProperty(QStringLiteral("toDateString"), method_toDateString, 0); + defineDefaultProperty(QStringLiteral("toTimeString"), method_toTimeString, 0); + defineDefaultProperty(QStringLiteral("toLocaleString"), method_toLocaleString, 0); + defineDefaultProperty(QStringLiteral("toLocaleDateString"), method_toLocaleDateString, 0); + defineDefaultProperty(QStringLiteral("toLocaleTimeString"), method_toLocaleTimeString, 0); + defineDefaultProperty(QStringLiteral("valueOf"), method_valueOf, 0); + defineDefaultProperty(QStringLiteral("getTime"), method_getTime, 0); + defineDefaultProperty(QStringLiteral("getYear"), method_getYear, 0); + defineDefaultProperty(QStringLiteral("getFullYear"), method_getFullYear, 0); + defineDefaultProperty(QStringLiteral("getUTCFullYear"), method_getUTCFullYear, 0); + defineDefaultProperty(QStringLiteral("getMonth"), method_getMonth, 0); + defineDefaultProperty(QStringLiteral("getUTCMonth"), method_getUTCMonth, 0); + defineDefaultProperty(QStringLiteral("getDate"), method_getDate, 0); + defineDefaultProperty(QStringLiteral("getUTCDate"), method_getUTCDate, 0); + defineDefaultProperty(QStringLiteral("getDay"), method_getDay, 0); + defineDefaultProperty(QStringLiteral("getUTCDay"), method_getUTCDay, 0); + defineDefaultProperty(QStringLiteral("getHours"), method_getHours, 0); + defineDefaultProperty(QStringLiteral("getUTCHours"), method_getUTCHours, 0); + defineDefaultProperty(QStringLiteral("getMinutes"), method_getMinutes, 0); + defineDefaultProperty(QStringLiteral("getUTCMinutes"), method_getUTCMinutes, 0); + defineDefaultProperty(QStringLiteral("getSeconds"), method_getSeconds, 0); + defineDefaultProperty(QStringLiteral("getUTCSeconds"), method_getUTCSeconds, 0); + defineDefaultProperty(QStringLiteral("getMilliseconds"), method_getMilliseconds, 0); + defineDefaultProperty(QStringLiteral("getUTCMilliseconds"), method_getUTCMilliseconds, 0); + defineDefaultProperty(QStringLiteral("getTimezoneOffset"), method_getTimezoneOffset, 0); + defineDefaultProperty(QStringLiteral("setTime"), method_setTime, 1); + defineDefaultProperty(QStringLiteral("setMilliseconds"), method_setMilliseconds, 1); + defineDefaultProperty(QStringLiteral("setUTCMilliseconds"), method_setUTCMilliseconds, 1); + defineDefaultProperty(QStringLiteral("setSeconds"), method_setSeconds, 2); + defineDefaultProperty(QStringLiteral("setUTCSeconds"), method_setUTCSeconds, 2); + defineDefaultProperty(QStringLiteral("setMinutes"), method_setMinutes, 3); + defineDefaultProperty(QStringLiteral("setUTCMinutes"), method_setUTCMinutes, 3); + defineDefaultProperty(QStringLiteral("setHours"), method_setHours, 4); + defineDefaultProperty(QStringLiteral("setUTCHours"), method_setUTCHours, 4); + defineDefaultProperty(QStringLiteral("setDate"), method_setDate, 1); + defineDefaultProperty(QStringLiteral("setUTCDate"), method_setUTCDate, 1); + defineDefaultProperty(QStringLiteral("setMonth"), method_setMonth, 2); + defineDefaultProperty(QStringLiteral("setUTCMonth"), method_setUTCMonth, 2); + defineDefaultProperty(QStringLiteral("setYear"), method_setYear, 1); + defineDefaultProperty(QStringLiteral("setFullYear"), method_setFullYear, 3); + defineDefaultProperty(QStringLiteral("setUTCFullYear"), method_setUTCFullYear, 3); + defineDefaultProperty(QStringLiteral("toUTCString"), method_toUTCString, 0); + defineDefaultProperty(QStringLiteral("toGMTString"), method_toUTCString, 0); + defineDefaultProperty(QStringLiteral("toISOString"), method_toISOString, 0); + defineDefaultProperty(QStringLiteral("toJSON"), method_toJSON, 1); } double DatePrototype::getThisDate(ExecutionContext *ctx) diff --git a/src/qml/jsruntime/qv4dateobject_p.h b/src/qml/jsruntime/qv4dateobject_p.h index 45a9420a41..758a2ce197 100644 --- a/src/qml/jsruntime/qv4dateobject_p.h +++ b/src/qml/jsruntime/qv4dateobject_p.h @@ -81,7 +81,7 @@ struct DateCtor: FunctionObject struct DatePrototype: DateObject { DatePrototype(InternalClass *ic): DateObject(ic) {} - void init(ExecutionContext *ctx, const Value &ctor); + void init(ExecutionEngine *engine, const Value &ctor); static double getThisDate(ExecutionContext *ctx); diff --git a/src/qml/jsruntime/qv4engine.cpp b/src/qml/jsruntime/qv4engine.cpp index 331d9d83f4..4039e2135c 100644 --- a/src/qml/jsruntime/qv4engine.cpp +++ b/src/qml/jsruntime/qv4engine.cpp @@ -232,14 +232,14 @@ ExecutionEngine::ExecutionEngine(QQmlJS::EvalISelFactory *factory) typeErrorCtor = Value::fromObject(new (memoryManager) TypeErrorCtor(rootContext)); uRIErrorCtor = Value::fromObject(new (memoryManager) URIErrorCtor(rootContext)); - objectPrototype->init(rootContext, objectCtor); + objectPrototype->init(this, objectCtor); stringPrototype->init(this, stringCtor); - numberPrototype->init(rootContext, numberCtor); - booleanPrototype->init(rootContext, booleanCtor); - arrayPrototype->init(rootContext, arrayCtor); - datePrototype->init(rootContext, dateCtor); - functionPrototype->init(rootContext, functionCtor); - regExpPrototype->init(rootContext, regExpCtor); + numberPrototype->init(this, numberCtor); + booleanPrototype->init(this, booleanCtor); + arrayPrototype->init(this, arrayCtor); + datePrototype->init(this, dateCtor); + functionPrototype->init(this, functionCtor); + regExpPrototype->init(this, regExpCtor); errorPrototype->init(this, errorCtor); evalErrorPrototype->init(this, evalErrorCtor); rangeErrorPrototype->init(this, rangeErrorCtor); @@ -248,8 +248,8 @@ ExecutionEngine::ExecutionEngine(QQmlJS::EvalISelFactory *factory) typeErrorPrototype->init(this, typeErrorCtor); uRIErrorPrototype->init(this, uRIErrorCtor); - variantPrototype->init(this); - sequencePrototype->init(this); + variantPrototype->init(); + sequencePrototype->init(); // // set up the global object @@ -258,41 +258,41 @@ ExecutionEngine::ExecutionEngine(QQmlJS::EvalISelFactory *factory) rootContext->global = globalObject; rootContext->thisObject = Value::fromObject(globalObject); - globalObject->defineDefaultProperty(rootContext, QStringLiteral("Object"), objectCtor); - globalObject->defineDefaultProperty(rootContext, QStringLiteral("String"), stringCtor); - globalObject->defineDefaultProperty(rootContext, QStringLiteral("Number"), numberCtor); - globalObject->defineDefaultProperty(rootContext, QStringLiteral("Boolean"), booleanCtor); - globalObject->defineDefaultProperty(rootContext, QStringLiteral("Array"), arrayCtor); - globalObject->defineDefaultProperty(rootContext, QStringLiteral("Function"), functionCtor); - globalObject->defineDefaultProperty(rootContext, QStringLiteral("Date"), dateCtor); - globalObject->defineDefaultProperty(rootContext, QStringLiteral("RegExp"), regExpCtor); - globalObject->defineDefaultProperty(rootContext, QStringLiteral("Error"), errorCtor); - globalObject->defineDefaultProperty(rootContext, QStringLiteral("EvalError"), evalErrorCtor); - globalObject->defineDefaultProperty(rootContext, QStringLiteral("RangeError"), rangeErrorCtor); - globalObject->defineDefaultProperty(rootContext, QStringLiteral("ReferenceError"), referenceErrorCtor); - globalObject->defineDefaultProperty(rootContext, QStringLiteral("SyntaxError"), syntaxErrorCtor); - globalObject->defineDefaultProperty(rootContext, QStringLiteral("TypeError"), typeErrorCtor); - globalObject->defineDefaultProperty(rootContext, QStringLiteral("URIError"), uRIErrorCtor); - globalObject->defineDefaultProperty(rootContext, QStringLiteral("Math"), Value::fromObject(new (memoryManager) MathObject(rootContext))); - globalObject->defineDefaultProperty(rootContext, QStringLiteral("JSON"), Value::fromObject(new (memoryManager) JsonObject(rootContext))); - - globalObject->defineReadonlyProperty(this, QStringLiteral("undefined"), Value::undefinedValue()); - globalObject->defineReadonlyProperty(this, QStringLiteral("NaN"), Value::fromDouble(std::numeric_limits<double>::quiet_NaN())); - globalObject->defineReadonlyProperty(this, QStringLiteral("Infinity"), Value::fromDouble(Q_INFINITY)); + globalObject->defineDefaultProperty(QStringLiteral("Object"), objectCtor); + globalObject->defineDefaultProperty(QStringLiteral("String"), stringCtor); + globalObject->defineDefaultProperty(QStringLiteral("Number"), numberCtor); + globalObject->defineDefaultProperty(QStringLiteral("Boolean"), booleanCtor); + globalObject->defineDefaultProperty(QStringLiteral("Array"), arrayCtor); + globalObject->defineDefaultProperty(QStringLiteral("Function"), functionCtor); + globalObject->defineDefaultProperty(QStringLiteral("Date"), dateCtor); + globalObject->defineDefaultProperty(QStringLiteral("RegExp"), regExpCtor); + globalObject->defineDefaultProperty(QStringLiteral("Error"), errorCtor); + globalObject->defineDefaultProperty(QStringLiteral("EvalError"), evalErrorCtor); + globalObject->defineDefaultProperty(QStringLiteral("RangeError"), rangeErrorCtor); + globalObject->defineDefaultProperty(QStringLiteral("ReferenceError"), referenceErrorCtor); + globalObject->defineDefaultProperty(QStringLiteral("SyntaxError"), syntaxErrorCtor); + globalObject->defineDefaultProperty(QStringLiteral("TypeError"), typeErrorCtor); + globalObject->defineDefaultProperty(QStringLiteral("URIError"), uRIErrorCtor); + globalObject->defineDefaultProperty(QStringLiteral("Math"), Value::fromObject(new (memoryManager) MathObject(this))); + globalObject->defineDefaultProperty(QStringLiteral("JSON"), Value::fromObject(new (memoryManager) JsonObject(this))); + + globalObject->defineReadonlyProperty(QStringLiteral("undefined"), Value::undefinedValue()); + globalObject->defineReadonlyProperty(QStringLiteral("NaN"), Value::fromDouble(std::numeric_limits<double>::quiet_NaN())); + globalObject->defineReadonlyProperty(QStringLiteral("Infinity"), Value::fromDouble(Q_INFINITY)); evalFunction = new (memoryManager) EvalFunction(rootContext); - globalObject->defineDefaultProperty(rootContext, QStringLiteral("eval"), Value::fromObject(evalFunction)); - - globalObject->defineDefaultProperty(rootContext, QStringLiteral("parseInt"), GlobalFunctions::method_parseInt, 2); - globalObject->defineDefaultProperty(rootContext, QStringLiteral("parseFloat"), GlobalFunctions::method_parseFloat, 1); - globalObject->defineDefaultProperty(rootContext, QStringLiteral("isNaN"), GlobalFunctions::method_isNaN, 1); - globalObject->defineDefaultProperty(rootContext, QStringLiteral("isFinite"), GlobalFunctions::method_isFinite, 1); - globalObject->defineDefaultProperty(rootContext, QStringLiteral("decodeURI"), GlobalFunctions::method_decodeURI, 1); - globalObject->defineDefaultProperty(rootContext, QStringLiteral("decodeURIComponent"), GlobalFunctions::method_decodeURIComponent, 1); - globalObject->defineDefaultProperty(rootContext, QStringLiteral("encodeURI"), GlobalFunctions::method_encodeURI, 1); - globalObject->defineDefaultProperty(rootContext, QStringLiteral("encodeURIComponent"), GlobalFunctions::method_encodeURIComponent, 1); - globalObject->defineDefaultProperty(rootContext, QStringLiteral("escape"), GlobalFunctions::method_escape, 1); - globalObject->defineDefaultProperty(rootContext, QStringLiteral("unescape"), GlobalFunctions::method_unescape, 1); + globalObject->defineDefaultProperty(QStringLiteral("eval"), Value::fromObject(evalFunction)); + + globalObject->defineDefaultProperty(QStringLiteral("parseInt"), GlobalFunctions::method_parseInt, 2); + globalObject->defineDefaultProperty(QStringLiteral("parseFloat"), GlobalFunctions::method_parseFloat, 1); + globalObject->defineDefaultProperty(QStringLiteral("isNaN"), GlobalFunctions::method_isNaN, 1); + globalObject->defineDefaultProperty(QStringLiteral("isFinite"), GlobalFunctions::method_isFinite, 1); + globalObject->defineDefaultProperty(QStringLiteral("decodeURI"), GlobalFunctions::method_decodeURI, 1); + globalObject->defineDefaultProperty(QStringLiteral("decodeURIComponent"), GlobalFunctions::method_decodeURIComponent, 1); + globalObject->defineDefaultProperty(QStringLiteral("encodeURI"), GlobalFunctions::method_encodeURI, 1); + globalObject->defineDefaultProperty(QStringLiteral("encodeURIComponent"), GlobalFunctions::method_encodeURIComponent, 1); + globalObject->defineDefaultProperty(QStringLiteral("escape"), GlobalFunctions::method_escape, 1); + globalObject->defineDefaultProperty(QStringLiteral("unescape"), GlobalFunctions::method_unescape, 1); Scope scope(this); Scoped<String> name(scope, newString(QStringLiteral("thrower"))); diff --git a/src/qml/jsruntime/qv4errorobject.cpp b/src/qml/jsruntime/qv4errorobject.cpp index 1fd539ae2f..0face7cf8c 100644 --- a/src/qml/jsruntime/qv4errorobject.cpp +++ b/src/qml/jsruntime/qv4errorobject.cpp @@ -78,7 +78,7 @@ ErrorObject::ErrorObject(InternalClass *ic) { type = Type_ErrorObject; vtbl = &static_vtbl; - defineDefaultProperty(ic->engine, QStringLiteral("name"), Value::fromString(ic->engine, "Error")); + defineDefaultProperty(QStringLiteral("name"), Value::fromString(ic->engine, "Error")); } ErrorObject::ErrorObject(InternalClass *ic, const Value &message, ErrorType t) @@ -88,16 +88,16 @@ ErrorObject::ErrorObject(InternalClass *ic, const Value &message, ErrorType t) type = Type_ErrorObject; vtbl = &static_vtbl; subtype = t; - defineAccessorProperty(ic->engine, QStringLiteral("stack"), ErrorObject::method_get_stack, 0); + defineAccessorProperty(QStringLiteral("stack"), ErrorObject::method_get_stack, 0); if (!message.isUndefined()) - defineDefaultProperty(ic->engine, QStringLiteral("message"), message); - defineDefaultProperty(ic->engine, QStringLiteral("name"), Value::fromString(ic->engine, className())); + defineDefaultProperty(QStringLiteral("message"), message); + defineDefaultProperty(QStringLiteral("name"), Value::fromString(ic->engine, className())); stackTrace = ic->engine->stackTrace(); if (!stackTrace.isEmpty()) { - defineDefaultProperty(ic->engine, QStringLiteral("fileName"), Value::fromString(ic->engine, stackTrace.at(0).source)); - defineDefaultProperty(ic->engine, QStringLiteral("lineNumber"), Value::fromInt32(stackTrace.at(0).line)); + defineDefaultProperty(QStringLiteral("fileName"), Value::fromString(ic->engine, stackTrace.at(0).source)); + defineDefaultProperty(QStringLiteral("lineNumber"), Value::fromInt32(stackTrace.at(0).line)); } } @@ -108,9 +108,9 @@ ErrorObject::ErrorObject(InternalClass *ic, const QString &message, const QStrin type = Type_ErrorObject; vtbl = &static_vtbl; subtype = t; - defineAccessorProperty(ic->engine, QStringLiteral("stack"), ErrorObject::method_get_stack, 0); + defineAccessorProperty(QStringLiteral("stack"), ErrorObject::method_get_stack, 0); - defineDefaultProperty(ic->engine, QStringLiteral("name"), Value::fromString(ic->engine, className())); + defineDefaultProperty(QStringLiteral("name"), Value::fromString(ic->engine, className())); stackTrace = ic->engine->stackTrace(); ExecutionEngine::StackFrame frame; @@ -120,11 +120,11 @@ ErrorObject::ErrorObject(InternalClass *ic, const QString &message, const QStrin stackTrace.prepend(frame); if (!stackTrace.isEmpty()) { - defineDefaultProperty(ic->engine, QStringLiteral("fileName"), Value::fromString(ic->engine, stackTrace.at(0).source)); - defineDefaultProperty(ic->engine, QStringLiteral("lineNumber"), Value::fromInt32(stackTrace.at(0).line)); + defineDefaultProperty(QStringLiteral("fileName"), Value::fromString(ic->engine, stackTrace.at(0).source)); + defineDefaultProperty(QStringLiteral("lineNumber"), Value::fromInt32(stackTrace.at(0).line)); } - defineDefaultProperty(ic->engine, QStringLiteral("message"), Value::fromString(ic->engine->newString(message))); + defineDefaultProperty(QStringLiteral("message"), Value::fromString(ic->engine->newString(message))); } ReturnedValue ErrorObject::method_get_stack(SimpleCallContext *ctx) @@ -321,9 +321,9 @@ void ErrorPrototype::init(ExecutionEngine *engine, const Value &ctor, Object *ob { ctor.objectValue()->defineReadonlyProperty(engine->id_prototype, Value::fromObject(obj)); ctor.objectValue()->defineReadonlyProperty(engine->id_length, Value::fromInt32(1)); - obj->defineDefaultProperty(engine, QStringLiteral("constructor"), ctor); - obj->defineDefaultProperty(engine, QStringLiteral("toString"), method_toString, 0); - obj->defineDefaultProperty(engine, QStringLiteral("message"), Value::fromString(engine, QString())); + obj->defineDefaultProperty(QStringLiteral("constructor"), ctor); + obj->defineDefaultProperty(QStringLiteral("toString"), method_toString, 0); + obj->defineDefaultProperty(QStringLiteral("message"), Value::fromString(engine, QString())); } ReturnedValue ErrorPrototype::method_toString(SimpleCallContext *ctx) diff --git a/src/qml/jsruntime/qv4functionobject.cpp b/src/qml/jsruntime/qv4functionobject.cpp index 18bf4ed6b5..851bc49c6b 100644 --- a/src/qml/jsruntime/qv4functionobject.cpp +++ b/src/qml/jsruntime/qv4functionobject.cpp @@ -267,17 +267,17 @@ FunctionPrototype::FunctionPrototype(InternalClass *ic) { } -void FunctionPrototype::init(ExecutionContext *ctx, const Value &ctor) +void FunctionPrototype::init(ExecutionEngine *engine, const Value &ctor) { - ctor.objectValue()->defineReadonlyProperty(ctx->engine->id_length, Value::fromInt32(1)); - ctor.objectValue()->defineReadonlyProperty(ctx->engine->id_prototype, Value::fromObject(this)); + ctor.objectValue()->defineReadonlyProperty(engine->id_length, Value::fromInt32(1)); + ctor.objectValue()->defineReadonlyProperty(engine->id_prototype, Value::fromObject(this)); - defineReadonlyProperty(ctx->engine->id_length, Value::fromInt32(0)); - defineDefaultProperty(ctx, QStringLiteral("constructor"), ctor); - defineDefaultProperty(ctx, QStringLiteral("toString"), method_toString, 0); - defineDefaultProperty(ctx, QStringLiteral("apply"), method_apply, 2); - defineDefaultProperty(ctx, QStringLiteral("call"), method_call, 1); - defineDefaultProperty(ctx, QStringLiteral("bind"), method_bind, 1); + defineReadonlyProperty(engine->id_length, Value::fromInt32(0)); + defineDefaultProperty(QStringLiteral("constructor"), ctor); + defineDefaultProperty(QStringLiteral("toString"), method_toString, 0); + defineDefaultProperty(QStringLiteral("apply"), method_apply, 2); + defineDefaultProperty(QStringLiteral("call"), method_call, 1); + defineDefaultProperty(QStringLiteral("bind"), method_bind, 1); } diff --git a/src/qml/jsruntime/qv4functionobject_p.h b/src/qml/jsruntime/qv4functionobject_p.h index a0f4cf9463..141bf22a49 100644 --- a/src/qml/jsruntime/qv4functionobject_p.h +++ b/src/qml/jsruntime/qv4functionobject_p.h @@ -159,7 +159,7 @@ struct FunctionCtor: FunctionObject struct FunctionPrototype: FunctionObject { FunctionPrototype(InternalClass *ic); - void init(ExecutionContext *ctx, const Value &ctor); + void init(ExecutionEngine *engine, const Value &ctor); static ReturnedValue method_toString(SimpleCallContext *ctx); static ReturnedValue method_apply(SimpleCallContext *ctx); diff --git a/src/qml/jsruntime/qv4jsonobject.cpp b/src/qml/jsruntime/qv4jsonobject.cpp index df6de78710..d67daff07f 100644 --- a/src/qml/jsruntime/qv4jsonobject.cpp +++ b/src/qml/jsruntime/qv4jsonobject.cpp @@ -867,13 +867,13 @@ QString Stringify::JA(ArrayObject *a) } -JsonObject::JsonObject(ExecutionContext *context) - : Object(context->engine) +JsonObject::JsonObject(ExecutionEngine *engine) + : Object(engine) { type = Type_JSONObject; - defineDefaultProperty(context, QStringLiteral("parse"), method_parse, 2); - defineDefaultProperty(context, QStringLiteral("stringify"), method_stringify, 3); + defineDefaultProperty(QStringLiteral("parse"), method_parse, 2); + defineDefaultProperty(QStringLiteral("stringify"), method_stringify, 3); } diff --git a/src/qml/jsruntime/qv4jsonobject_p.h b/src/qml/jsruntime/qv4jsonobject_p.h index 821cffcc7c..1dae5bbb40 100644 --- a/src/qml/jsruntime/qv4jsonobject_p.h +++ b/src/qml/jsruntime/qv4jsonobject_p.h @@ -54,7 +54,7 @@ struct JsonObject : Object { private: typedef QSet<QV4::Object *> V4ObjectSet; public: - JsonObject(ExecutionContext *context); + JsonObject(ExecutionEngine *engine); static ReturnedValue method_parse(SimpleCallContext *ctx); static ReturnedValue method_stringify(SimpleCallContext *ctx); diff --git a/src/qml/jsruntime/qv4mathobject.cpp b/src/qml/jsruntime/qv4mathobject.cpp index cf2d5afd3f..3d57b5fb2f 100644 --- a/src/qml/jsruntime/qv4mathobject.cpp +++ b/src/qml/jsruntime/qv4mathobject.cpp @@ -50,38 +50,38 @@ using namespace QV4; static const double qt_PI = 2.0 * ::asin(1.0); -MathObject::MathObject(ExecutionContext *ctx) - : Object(ctx->engine) +MathObject::MathObject(ExecutionEngine *engine) + : Object(engine) { type = Type_MathObject; - defineReadonlyProperty(ctx->engine, QStringLiteral("E"), Value::fromDouble(::exp(1.0))); - defineReadonlyProperty(ctx->engine, QStringLiteral("LN2"), Value::fromDouble(::log(2.0))); - defineReadonlyProperty(ctx->engine, QStringLiteral("LN10"), Value::fromDouble(::log(10.0))); - defineReadonlyProperty(ctx->engine, QStringLiteral("LOG2E"), Value::fromDouble(1.0/::log(2.0))); - defineReadonlyProperty(ctx->engine, QStringLiteral("LOG10E"), Value::fromDouble(1.0/::log(10.0))); - defineReadonlyProperty(ctx->engine, QStringLiteral("PI"), Value::fromDouble(qt_PI)); - defineReadonlyProperty(ctx->engine, QStringLiteral("SQRT1_2"), Value::fromDouble(::sqrt(0.5))); - defineReadonlyProperty(ctx->engine, QStringLiteral("SQRT2"), Value::fromDouble(::sqrt(2.0))); - - defineDefaultProperty(ctx, QStringLiteral("abs"), method_abs, 1); - defineDefaultProperty(ctx, QStringLiteral("acos"), method_acos, 1); - defineDefaultProperty(ctx, QStringLiteral("asin"), method_asin, 0); - defineDefaultProperty(ctx, QStringLiteral("atan"), method_atan, 1); - defineDefaultProperty(ctx, QStringLiteral("atan2"), method_atan2, 2); - defineDefaultProperty(ctx, QStringLiteral("ceil"), method_ceil, 1); - defineDefaultProperty(ctx, QStringLiteral("cos"), method_cos, 1); - defineDefaultProperty(ctx, QStringLiteral("exp"), method_exp, 1); - defineDefaultProperty(ctx, QStringLiteral("floor"), method_floor, 1); - defineDefaultProperty(ctx, QStringLiteral("log"), method_log, 1); - defineDefaultProperty(ctx, QStringLiteral("max"), method_max, 2); - defineDefaultProperty(ctx, QStringLiteral("min"), method_min, 2); - defineDefaultProperty(ctx, QStringLiteral("pow"), method_pow, 2); - defineDefaultProperty(ctx, QStringLiteral("random"), method_random, 0); - defineDefaultProperty(ctx, QStringLiteral("round"), method_round, 1); - defineDefaultProperty(ctx, QStringLiteral("sin"), method_sin, 1); - defineDefaultProperty(ctx, QStringLiteral("sqrt"), method_sqrt, 1); - defineDefaultProperty(ctx, QStringLiteral("tan"), method_tan, 1); + defineReadonlyProperty(QStringLiteral("E"), Value::fromDouble(::exp(1.0))); + defineReadonlyProperty(QStringLiteral("LN2"), Value::fromDouble(::log(2.0))); + defineReadonlyProperty(QStringLiteral("LN10"), Value::fromDouble(::log(10.0))); + defineReadonlyProperty(QStringLiteral("LOG2E"), Value::fromDouble(1.0/::log(2.0))); + defineReadonlyProperty(QStringLiteral("LOG10E"), Value::fromDouble(1.0/::log(10.0))); + defineReadonlyProperty(QStringLiteral("PI"), Value::fromDouble(qt_PI)); + defineReadonlyProperty(QStringLiteral("SQRT1_2"), Value::fromDouble(::sqrt(0.5))); + defineReadonlyProperty(QStringLiteral("SQRT2"), Value::fromDouble(::sqrt(2.0))); + + defineDefaultProperty(QStringLiteral("abs"), method_abs, 1); + defineDefaultProperty(QStringLiteral("acos"), method_acos, 1); + defineDefaultProperty(QStringLiteral("asin"), method_asin, 0); + defineDefaultProperty(QStringLiteral("atan"), method_atan, 1); + defineDefaultProperty(QStringLiteral("atan2"), method_atan2, 2); + defineDefaultProperty(QStringLiteral("ceil"), method_ceil, 1); + defineDefaultProperty(QStringLiteral("cos"), method_cos, 1); + defineDefaultProperty(QStringLiteral("exp"), method_exp, 1); + defineDefaultProperty(QStringLiteral("floor"), method_floor, 1); + defineDefaultProperty(QStringLiteral("log"), method_log, 1); + defineDefaultProperty(QStringLiteral("max"), method_max, 2); + defineDefaultProperty(QStringLiteral("min"), method_min, 2); + defineDefaultProperty(QStringLiteral("pow"), method_pow, 2); + defineDefaultProperty(QStringLiteral("random"), method_random, 0); + defineDefaultProperty(QStringLiteral("round"), method_round, 1); + defineDefaultProperty(QStringLiteral("sin"), method_sin, 1); + defineDefaultProperty(QStringLiteral("sqrt"), method_sqrt, 1); + defineDefaultProperty(QStringLiteral("tan"), method_tan, 1); } /* copies the sign from y to x and returns the result */ diff --git a/src/qml/jsruntime/qv4mathobject_p.h b/src/qml/jsruntime/qv4mathobject_p.h index cdadc875f9..b65264b5dd 100644 --- a/src/qml/jsruntime/qv4mathobject_p.h +++ b/src/qml/jsruntime/qv4mathobject_p.h @@ -49,7 +49,7 @@ namespace QV4 { struct MathObject: Object { - MathObject(ExecutionContext *ctx); + MathObject(ExecutionEngine *engine); static ReturnedValue method_abs(SimpleCallContext *context); static ReturnedValue method_acos(SimpleCallContext *context); diff --git a/src/qml/jsruntime/qv4numberobject.cpp b/src/qml/jsruntime/qv4numberobject.cpp index b9b64cf534..eb64b92aa2 100644 --- a/src/qml/jsruntime/qv4numberobject.cpp +++ b/src/qml/jsruntime/qv4numberobject.cpp @@ -68,32 +68,32 @@ ReturnedValue NumberCtor::call(Managed *, CallData *callData) return Value::fromDouble(dbl).asReturnedValue(); } -void NumberPrototype::init(ExecutionContext *ctx, const Value &ctor) +void NumberPrototype::init(ExecutionEngine *engine, const Value &ctor) { - ctor.objectValue()->defineReadonlyProperty(ctx->engine->id_prototype, Value::fromObject(this)); - ctor.objectValue()->defineReadonlyProperty(ctx->engine->id_length, Value::fromInt32(1)); + ctor.objectValue()->defineReadonlyProperty(engine->id_prototype, Value::fromObject(this)); + ctor.objectValue()->defineReadonlyProperty(engine->id_length, Value::fromInt32(1)); - ctor.objectValue()->defineReadonlyProperty(ctx->engine, QStringLiteral("NaN"), Value::fromDouble(qSNaN())); - ctor.objectValue()->defineReadonlyProperty(ctx->engine, QStringLiteral("NEGATIVE_INFINITY"), Value::fromDouble(-qInf())); - ctor.objectValue()->defineReadonlyProperty(ctx->engine, QStringLiteral("POSITIVE_INFINITY"), Value::fromDouble(qInf())); - ctor.objectValue()->defineReadonlyProperty(ctx->engine, QStringLiteral("MAX_VALUE"), Value::fromDouble(1.7976931348623158e+308)); + ctor.objectValue()->defineReadonlyProperty(QStringLiteral("NaN"), Value::fromDouble(qSNaN())); + ctor.objectValue()->defineReadonlyProperty(QStringLiteral("NEGATIVE_INFINITY"), Value::fromDouble(-qInf())); + ctor.objectValue()->defineReadonlyProperty(QStringLiteral("POSITIVE_INFINITY"), Value::fromDouble(qInf())); + ctor.objectValue()->defineReadonlyProperty(QStringLiteral("MAX_VALUE"), Value::fromDouble(1.7976931348623158e+308)); #ifdef __INTEL_COMPILER # pragma warning( push ) # pragma warning(disable: 239) #endif - ctor.objectValue()->defineReadonlyProperty(ctx->engine, QStringLiteral("MIN_VALUE"), Value::fromDouble(5e-324)); + ctor.objectValue()->defineReadonlyProperty(QStringLiteral("MIN_VALUE"), Value::fromDouble(5e-324)); #ifdef __INTEL_COMPILER # pragma warning( pop ) #endif - defineDefaultProperty(ctx, QStringLiteral("constructor"), ctor); - defineDefaultProperty(ctx, QStringLiteral("toString"), method_toString); - defineDefaultProperty(ctx, QStringLiteral("toLocaleString"), method_toLocaleString); - defineDefaultProperty(ctx, QStringLiteral("valueOf"), method_valueOf); - defineDefaultProperty(ctx, QStringLiteral("toFixed"), method_toFixed, 1); - defineDefaultProperty(ctx, QStringLiteral("toExponential"), method_toExponential); - defineDefaultProperty(ctx, QStringLiteral("toPrecision"), method_toPrecision); + defineDefaultProperty(QStringLiteral("constructor"), ctor); + defineDefaultProperty(QStringLiteral("toString"), method_toString); + defineDefaultProperty(QStringLiteral("toLocaleString"), method_toLocaleString); + defineDefaultProperty(QStringLiteral("valueOf"), method_valueOf); + defineDefaultProperty(QStringLiteral("toFixed"), method_toFixed, 1); + defineDefaultProperty(QStringLiteral("toExponential"), method_toExponential); + defineDefaultProperty(QStringLiteral("toPrecision"), method_toPrecision); } inline Value thisNumberValue(ExecutionContext *ctx) diff --git a/src/qml/jsruntime/qv4numberobject_p.h b/src/qml/jsruntime/qv4numberobject_p.h index d2c4ce6569..d5a0cda287 100644 --- a/src/qml/jsruntime/qv4numberobject_p.h +++ b/src/qml/jsruntime/qv4numberobject_p.h @@ -61,7 +61,7 @@ struct NumberCtor: FunctionObject struct NumberPrototype: NumberObject { NumberPrototype(InternalClass *ic): NumberObject(ic) {} - void init(ExecutionContext *ctx, const Value &ctor); + void init(ExecutionEngine *engine, const Value &ctor); static ReturnedValue method_toString(SimpleCallContext *ctx); static ReturnedValue method_toLocaleString(SimpleCallContext *ctx); diff --git a/src/qml/jsruntime/qv4object.cpp b/src/qml/jsruntime/qv4object.cpp index b232718125..3acf4bf9ab 100644 --- a/src/qml/jsruntime/qv4object.cpp +++ b/src/qml/jsruntime/qv4object.cpp @@ -221,45 +221,29 @@ void Object::defineDefaultProperty(const StringRef name, Value value) pd->value = value; } -void Object::defineDefaultProperty(ExecutionContext *context, const QString &name, Value value) +void Object::defineDefaultProperty(const QString &name, Value value) { - Scope scope(context); - ScopedString s(scope, context->engine->newIdentifier(name)); + ExecutionEngine *e = engine(); + Scope scope(e); + ScopedString s(scope, e->newIdentifier(name)); defineDefaultProperty(s, value); } -void Object::defineDefaultProperty(ExecutionEngine *engine, const QString &name, Value value) +void Object::defineDefaultProperty(const QString &name, ReturnedValue (*code)(SimpleCallContext *), int argumentCount) { - Scope scope(engine); - ScopedString s(scope, engine->newIdentifier(name)); - defineDefaultProperty(s, value); -} - -void Object::defineDefaultProperty(ExecutionContext *context, const QString &name, ReturnedValue (*code)(SimpleCallContext *), int argumentCount) -{ - Q_UNUSED(argumentCount); - Scope scope(context); - Scoped<String> s(scope, context->engine->newIdentifier(name)); - Scoped<FunctionObject> function(scope, context->engine->newBuiltinFunction(context, s, code)); - function->defineReadonlyProperty(context->engine->id_length, Value::fromInt32(argumentCount)); - defineDefaultProperty(s, function.asValue()); -} - -void Object::defineDefaultProperty(ExecutionEngine *engine, const QString &name, ReturnedValue (*code)(SimpleCallContext *), int argumentCount) -{ - Q_UNUSED(argumentCount); - Scope scope(engine); - Scoped<String> s(scope, engine->newIdentifier(name)); - Scoped<FunctionObject> function(scope, engine->newBuiltinFunction(engine->rootContext, s, code)); - function->defineReadonlyProperty(engine->id_length, Value::fromInt32(argumentCount)); + ExecutionEngine *e = engine(); + Scope scope(e); + ScopedString s(scope, e->newIdentifier(name)); + Scoped<FunctionObject> function(scope, e->newBuiltinFunction(e->rootContext, s, code)); + function->defineReadonlyProperty(e->id_length, Value::fromInt32(argumentCount)); defineDefaultProperty(s, function.asValue()); } -void Object::defineAccessorProperty(ExecutionEngine *engine, const QString &name, - ReturnedValue (*getter)(SimpleCallContext *), ReturnedValue (*setter)(SimpleCallContext *)) +void Object::defineAccessorProperty(const QString &name, ReturnedValue (*getter)(SimpleCallContext *), ReturnedValue (*setter)(SimpleCallContext *)) { - Scope scope(engine); - Scoped<String> s(scope, engine->newIdentifier(name)); + ExecutionEngine *e = engine(); + Scope scope(e); + Scoped<String> s(scope, e->newIdentifier(name)); defineAccessorProperty(s, getter, setter); } @@ -274,16 +258,17 @@ void Object::defineAccessorProperty(const StringRef name, ReturnedValue (*getter p->setSetter(v4->newBuiltinFunction(v4->rootContext, name, setter)->getPointer()); } -void Object::defineReadonlyProperty(ExecutionEngine *engine, const QString &name, Value value) +void Object::defineReadonlyProperty(const QString &name, Value value) { - defineReadonlyProperty(engine->newIdentifier(name), value); + QV4::ExecutionEngine *e = engine(); + Scope scope(e); + ScopedString s(scope, e->newIdentifier(name)); + defineReadonlyProperty(s, value); } -void Object::defineReadonlyProperty(String *name, Value value) +void Object::defineReadonlyProperty(const StringRef name, Value value) { - Scope scope(engine()); - ScopedString s(scope, name); - Property *pd = insertMember(s, Attr_ReadOnly); + Property *pd = insertMember(name, Attr_ReadOnly); pd->value = value; } diff --git a/src/qml/jsruntime/qv4object_p.h b/src/qml/jsruntime/qv4object_p.h index b21bd7bec6..0ca64f71fe 100644 --- a/src/qml/jsruntime/qv4object_p.h +++ b/src/qml/jsruntime/qv4object_p.h @@ -164,15 +164,13 @@ struct Q_QML_EXPORT Object: Managed { /* The spec default: Writable: true, Enumerable: false, Configurable: true */ void defineDefaultProperty(const StringRef name, Value value); - void defineDefaultProperty(ExecutionContext *context, const QString &name, Value value); - void defineDefaultProperty(ExecutionEngine *engine, const QString &name, Value value); - void defineDefaultProperty(ExecutionContext *context, const QString &name, ReturnedValue (*code)(SimpleCallContext *), int count = 0); - void defineDefaultProperty(ExecutionEngine *engine, const QString &name, ReturnedValue (*code)(SimpleCallContext *), int count = 0); - void defineAccessorProperty(ExecutionEngine *engine, const QString &name, ReturnedValue (*getter)(SimpleCallContext *), ReturnedValue (*setter)(SimpleCallContext *)); + void defineDefaultProperty(const QString &name, Value value); + void defineDefaultProperty(const QString &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 *)); /* Fixed: Writable: false, Enumerable: false, Configurable: false */ - void defineReadonlyProperty(ExecutionEngine *engine, const QString &name, Value value); - void defineReadonlyProperty(String *name, Value value); + void defineReadonlyProperty(const QString &name, Value value); + void defineReadonlyProperty(const StringRef name, Value value); Property *insertMember(const StringRef s, PropertyAttributes attributes); diff --git a/src/qml/jsruntime/qv4objectproto.cpp b/src/qml/jsruntime/qv4objectproto.cpp index d0a94e8de7..67aeebf0a8 100644 --- a/src/qml/jsruntime/qv4objectproto.cpp +++ b/src/qml/jsruntime/qv4objectproto.cpp @@ -101,36 +101,35 @@ ReturnedValue ObjectCtor::call(Managed *m, CallData *callData) return __qmljs_to_object(m->engine()->current, ValueRef(&callData->args[0])); } -void ObjectPrototype::init(ExecutionContext *ctx, const Value &ctor) +void ObjectPrototype::init(ExecutionEngine *v4, const Value &ctor) { - ExecutionEngine *v4 = ctx->engine; Scope scope(v4); - ctor.objectValue()->defineReadonlyProperty(ctx->engine->id_prototype, Value::fromObject(this)); - ctor.objectValue()->defineReadonlyProperty(ctx->engine->id_length, Value::fromInt32(1)); - ctor.objectValue()->defineDefaultProperty(ctx, QStringLiteral("getPrototypeOf"), method_getPrototypeOf, 1); - ctor.objectValue()->defineDefaultProperty(ctx, QStringLiteral("getOwnPropertyDescriptor"), method_getOwnPropertyDescriptor, 2); - ctor.objectValue()->defineDefaultProperty(ctx, QStringLiteral("getOwnPropertyNames"), method_getOwnPropertyNames, 1); - ctor.objectValue()->defineDefaultProperty(ctx, QStringLiteral("create"), method_create, 2); - ctor.objectValue()->defineDefaultProperty(ctx, QStringLiteral("defineProperty"), method_defineProperty, 3); - ctor.objectValue()->defineDefaultProperty(ctx, QStringLiteral("defineProperties"), method_defineProperties, 2); - ctor.objectValue()->defineDefaultProperty(ctx, QStringLiteral("seal"), method_seal, 1); - ctor.objectValue()->defineDefaultProperty(ctx, QStringLiteral("freeze"), method_freeze, 1); - ctor.objectValue()->defineDefaultProperty(ctx, QStringLiteral("preventExtensions"), method_preventExtensions, 1); - ctor.objectValue()->defineDefaultProperty(ctx, QStringLiteral("isSealed"), method_isSealed, 1); - ctor.objectValue()->defineDefaultProperty(ctx, QStringLiteral("isFrozen"), method_isFrozen, 1); - ctor.objectValue()->defineDefaultProperty(ctx, QStringLiteral("isExtensible"), method_isExtensible, 1); - ctor.objectValue()->defineDefaultProperty(ctx, QStringLiteral("keys"), method_keys, 1); - - defineDefaultProperty(ctx, QStringLiteral("constructor"), ctor); - defineDefaultProperty(ctx, QStringLiteral("toString"), method_toString, 0); - defineDefaultProperty(ctx, QStringLiteral("toLocaleString"), method_toLocaleString, 0); - defineDefaultProperty(ctx, QStringLiteral("valueOf"), method_valueOf, 0); - defineDefaultProperty(ctx, QStringLiteral("hasOwnProperty"), method_hasOwnProperty, 1); - defineDefaultProperty(ctx, QStringLiteral("isPrototypeOf"), method_isPrototypeOf, 1); - defineDefaultProperty(ctx, QStringLiteral("propertyIsEnumerable"), method_propertyIsEnumerable, 1); - defineDefaultProperty(ctx, QStringLiteral("__defineGetter__"), method_defineGetter, 2); - defineDefaultProperty(ctx, QStringLiteral("__defineSetter__"), method_defineSetter, 2); + ctor.objectValue()->defineReadonlyProperty(v4->id_prototype, Value::fromObject(this)); + ctor.objectValue()->defineReadonlyProperty(v4->id_length, Value::fromInt32(1)); + ctor.objectValue()->defineDefaultProperty(QStringLiteral("getPrototypeOf"), method_getPrototypeOf, 1); + ctor.objectValue()->defineDefaultProperty(QStringLiteral("getOwnPropertyDescriptor"), method_getOwnPropertyDescriptor, 2); + ctor.objectValue()->defineDefaultProperty(QStringLiteral("getOwnPropertyNames"), method_getOwnPropertyNames, 1); + ctor.objectValue()->defineDefaultProperty(QStringLiteral("create"), method_create, 2); + ctor.objectValue()->defineDefaultProperty(QStringLiteral("defineProperty"), method_defineProperty, 3); + ctor.objectValue()->defineDefaultProperty(QStringLiteral("defineProperties"), method_defineProperties, 2); + ctor.objectValue()->defineDefaultProperty(QStringLiteral("seal"), method_seal, 1); + ctor.objectValue()->defineDefaultProperty(QStringLiteral("freeze"), method_freeze, 1); + ctor.objectValue()->defineDefaultProperty(QStringLiteral("preventExtensions"), method_preventExtensions, 1); + ctor.objectValue()->defineDefaultProperty(QStringLiteral("isSealed"), method_isSealed, 1); + ctor.objectValue()->defineDefaultProperty(QStringLiteral("isFrozen"), method_isFrozen, 1); + ctor.objectValue()->defineDefaultProperty(QStringLiteral("isExtensible"), method_isExtensible, 1); + ctor.objectValue()->defineDefaultProperty(QStringLiteral("keys"), method_keys, 1); + + defineDefaultProperty(QStringLiteral("constructor"), ctor); + defineDefaultProperty(QStringLiteral("toString"), method_toString, 0); + defineDefaultProperty(QStringLiteral("toLocaleString"), method_toLocaleString, 0); + defineDefaultProperty(QStringLiteral("valueOf"), method_valueOf, 0); + defineDefaultProperty(QStringLiteral("hasOwnProperty"), method_hasOwnProperty, 1); + defineDefaultProperty(QStringLiteral("isPrototypeOf"), method_isPrototypeOf, 1); + defineDefaultProperty(QStringLiteral("propertyIsEnumerable"), method_propertyIsEnumerable, 1); + defineDefaultProperty(QStringLiteral("__defineGetter__"), method_defineGetter, 2); + defineDefaultProperty(QStringLiteral("__defineSetter__"), method_defineSetter, 2); Scoped<String> id_proto(scope, v4->id___proto__); Property *p = insertMember(StringRef(v4->id___proto__), Attr_Accessor|Attr_NotEnumerable); diff --git a/src/qml/jsruntime/qv4objectproto_p.h b/src/qml/jsruntime/qv4objectproto_p.h index 311d53864f..3930b39569 100644 --- a/src/qml/jsruntime/qv4objectproto_p.h +++ b/src/qml/jsruntime/qv4objectproto_p.h @@ -62,7 +62,7 @@ struct ObjectPrototype: Object { ObjectPrototype(InternalClass *ic) : Object(ic) {} - void init(ExecutionContext *ctx, const Value &ctor); + void init(ExecutionEngine *engine, const Value &ctor); static ReturnedValue method_getPrototypeOf(SimpleCallContext *ctx); static ReturnedValue method_getOwnPropertyDescriptor(SimpleCallContext *ctx); diff --git a/src/qml/jsruntime/qv4qobjectwrapper.cpp b/src/qml/jsruntime/qv4qobjectwrapper.cpp index a779a41293..9eb20f4bcb 100644 --- a/src/qml/jsruntime/qv4qobjectwrapper.cpp +++ b/src/qml/jsruntime/qv4qobjectwrapper.cpp @@ -240,8 +240,8 @@ QObjectWrapper::QObjectWrapper(ExecutionEngine *engine, QObject *object) void QObjectWrapper::initializeBindings(ExecutionEngine *engine) { - engine->functionClass->prototype->defineDefaultProperty(engine, QStringLiteral("connect"), method_connect); - engine->functionClass->prototype->defineDefaultProperty(engine, QStringLiteral("disconnect"), method_disconnect); + engine->functionClass->prototype->defineDefaultProperty(QStringLiteral("connect"), method_connect); + engine->functionClass->prototype->defineDefaultProperty(QStringLiteral("disconnect"), method_disconnect); } QQmlPropertyData *QObjectWrapper::findProperty(ExecutionEngine *engine, QQmlContextData *qmlContext, String *name, RevisionMode revisionMode, QQmlPropertyData *local) const diff --git a/src/qml/jsruntime/qv4regexpobject.cpp b/src/qml/jsruntime/qv4regexpobject.cpp index aa3f1c3fb5..76d3216fde 100644 --- a/src/qml/jsruntime/qv4regexpobject.cpp +++ b/src/qml/jsruntime/qv4regexpobject.cpp @@ -157,10 +157,10 @@ void RegExpObject::init(ExecutionEngine *engine) p.replace('/', QLatin1String("\\/")); } - defineReadonlyProperty(engine->newIdentifier(QStringLiteral("source")), Value::fromString(engine->newString(p))); - defineReadonlyProperty(engine->newIdentifier(QStringLiteral("global")), Value::fromBoolean(global)); - defineReadonlyProperty(engine->newIdentifier(QStringLiteral("ignoreCase")), Value::fromBoolean(this->value->ignoreCase())); - defineReadonlyProperty(engine->newIdentifier(QStringLiteral("multiline")), Value::fromBoolean(this->value->multiLine())); + defineReadonlyProperty(QStringLiteral("source"), Value::fromString(engine->newString(p))); + defineReadonlyProperty(QStringLiteral("global"), Value::fromBoolean(global)); + defineReadonlyProperty(QStringLiteral("ignoreCase"), Value::fromBoolean(this->value->ignoreCase())); + defineReadonlyProperty(QStringLiteral("multiline"), Value::fromBoolean(this->value->multiLine())); } @@ -285,15 +285,15 @@ ReturnedValue RegExpCtor::call(Managed *that, CallData *callData) return construct(that, callData); } -void RegExpPrototype::init(ExecutionContext *ctx, const Value &ctor) +void RegExpPrototype::init(ExecutionEngine *engine, const Value &ctor) { - ctor.objectValue()->defineReadonlyProperty(ctx->engine->id_prototype, Value::fromObject(this)); - ctor.objectValue()->defineReadonlyProperty(ctx->engine->id_length, Value::fromInt32(2)); - defineDefaultProperty(ctx, QStringLiteral("constructor"), ctor); - defineDefaultProperty(ctx, QStringLiteral("exec"), method_exec, 1); - defineDefaultProperty(ctx, QStringLiteral("test"), method_test, 1); - defineDefaultProperty(ctx, QStringLiteral("toString"), method_toString, 0); - defineDefaultProperty(ctx, QStringLiteral("compile"), method_compile, 2); + ctor.objectValue()->defineReadonlyProperty(engine->id_prototype, Value::fromObject(this)); + ctor.objectValue()->defineReadonlyProperty(engine->id_length, Value::fromInt32(2)); + defineDefaultProperty(QStringLiteral("constructor"), ctor); + defineDefaultProperty(QStringLiteral("exec"), method_exec, 1); + defineDefaultProperty(QStringLiteral("test"), method_test, 1); + defineDefaultProperty(QStringLiteral("toString"), method_toString, 0); + defineDefaultProperty(QStringLiteral("compile"), method_compile, 2); } ReturnedValue RegExpPrototype::method_exec(SimpleCallContext *ctx) diff --git a/src/qml/jsruntime/qv4regexpobject_p.h b/src/qml/jsruntime/qv4regexpobject_p.h index 765e98176c..299be31f52 100644 --- a/src/qml/jsruntime/qv4regexpobject_p.h +++ b/src/qml/jsruntime/qv4regexpobject_p.h @@ -113,7 +113,7 @@ struct RegExpCtor: FunctionObject struct RegExpPrototype: RegExpObject { RegExpPrototype(InternalClass *ic): RegExpObject(ic) {} - void init(ExecutionContext *ctx, const Value &ctor); + void init(ExecutionEngine *engine, const Value &ctor); static ReturnedValue method_exec(SimpleCallContext *ctx); static ReturnedValue method_test(SimpleCallContext *ctx); diff --git a/src/qml/jsruntime/qv4sequenceobject.cpp b/src/qml/jsruntime/qv4sequenceobject.cpp index 72356204b5..d1f9363a7b 100644 --- a/src/qml/jsruntime/qv4sequenceobject.cpp +++ b/src/qml/jsruntime/qv4sequenceobject.cpp @@ -175,7 +175,7 @@ public: { type = Type_QmlSequence; vtbl = &static_vtbl; - init(engine); + init(); } QQmlSequence(QV4::ExecutionEngine *engine, QObject *object, int propertyIndex) @@ -187,12 +187,12 @@ public: type = Type_QmlSequence; vtbl = &static_vtbl; loadReference(); - init(engine); + init(); } - void init(ExecutionEngine *engine) + void init() { - defineAccessorProperty(engine, QStringLiteral("length"), method_get_length, method_set_length); + defineAccessorProperty(QStringLiteral("length"), method_get_length, method_set_length); } QV4::Value containerGetIndexed(uint index, bool *hasProperty) @@ -532,10 +532,10 @@ SequencePrototype::SequencePrototype(InternalClass *ic) } #undef REGISTER_QML_SEQUENCE_METATYPE -void SequencePrototype::init(QV4::ExecutionEngine *engine) +void SequencePrototype::init() { - defineDefaultProperty(engine, QStringLiteral("sort"), method_sort, 1); - defineDefaultProperty(engine, QStringLiteral("valueOf"), method_valueOf, 0); + defineDefaultProperty(QStringLiteral("sort"), method_sort, 1); + defineDefaultProperty(QStringLiteral("valueOf"), method_valueOf, 0); } QV4::ReturnedValue SequencePrototype::method_sort(QV4::SimpleCallContext *ctx) diff --git a/src/qml/jsruntime/qv4sequenceobject_p.h b/src/qml/jsruntime/qv4sequenceobject_p.h index f2d06d8918..260fea9897 100644 --- a/src/qml/jsruntime/qv4sequenceobject_p.h +++ b/src/qml/jsruntime/qv4sequenceobject_p.h @@ -67,7 +67,7 @@ struct SequencePrototype : public QV4::Object { SequencePrototype(QV4::InternalClass *ic); - void init(QV4::ExecutionEngine *engine); + void init(); static ReturnedValue method_valueOf(QV4::SimpleCallContext *ctx) { diff --git a/src/qml/jsruntime/qv4serialize.cpp b/src/qml/jsruntime/qv4serialize.cpp index 390c3382f2..f74e8d2451 100644 --- a/src/qml/jsruntime/qv4serialize.cpp +++ b/src/qml/jsruntime/qv4serialize.cpp @@ -364,7 +364,8 @@ ReturnedValue Serialize::deserialize(const char *&data, QV8Engine *engine) QQmlListModelWorkerAgent::VariantRef ref(agent); QVariant var = qVariantFromValue(ref); QV4::ScopedValue v(scope, engine->fromVariant((var))); - rv->asObject()->defineReadonlyProperty(v4->newString("__qml:hidden:ref"), v); + QV4::ScopedString s(scope, v4->newString("__qml:hidden:ref")); + rv->asObject()->defineReadonlyProperty(s, v); agent->release(); agent->setV8Engine(engine); diff --git a/src/qml/jsruntime/qv4stringobject.cpp b/src/qml/jsruntime/qv4stringobject.cpp index afd6e440dc..274e5b4bce 100644 --- a/src/qml/jsruntime/qv4stringobject.cpp +++ b/src/qml/jsruntime/qv4stringobject.cpp @@ -184,29 +184,29 @@ void StringPrototype::init(ExecutionEngine *engine, const Value &ctor) { ctor.objectValue()->defineReadonlyProperty(engine->id_prototype, Value::fromObject(this)); ctor.objectValue()->defineReadonlyProperty(engine->id_length, Value::fromInt32(1)); - ctor.objectValue()->defineDefaultProperty(engine, QStringLiteral("fromCharCode"), method_fromCharCode, 1); - - defineDefaultProperty(engine, QStringLiteral("constructor"), ctor); - defineDefaultProperty(engine, QStringLiteral("toString"), method_toString); - defineDefaultProperty(engine, QStringLiteral("valueOf"), method_toString); // valueOf and toString are identical - defineDefaultProperty(engine, QStringLiteral("charAt"), method_charAt, 1); - defineDefaultProperty(engine, QStringLiteral("charCodeAt"), method_charCodeAt, 1); - defineDefaultProperty(engine, QStringLiteral("concat"), method_concat, 1); - defineDefaultProperty(engine, QStringLiteral("indexOf"), method_indexOf, 1); - defineDefaultProperty(engine, QStringLiteral("lastIndexOf"), method_lastIndexOf, 1); - defineDefaultProperty(engine, QStringLiteral("localeCompare"), method_localeCompare, 1); - defineDefaultProperty(engine, QStringLiteral("match"), method_match, 1); - defineDefaultProperty(engine, QStringLiteral("replace"), method_replace, 2); - defineDefaultProperty(engine, QStringLiteral("search"), method_search, 1); - defineDefaultProperty(engine, QStringLiteral("slice"), method_slice, 2); - defineDefaultProperty(engine, QStringLiteral("split"), method_split, 2); - defineDefaultProperty(engine, QStringLiteral("substr"), method_substr, 2); - defineDefaultProperty(engine, QStringLiteral("substring"), method_substring, 2); - defineDefaultProperty(engine, QStringLiteral("toLowerCase"), method_toLowerCase); - defineDefaultProperty(engine, QStringLiteral("toLocaleLowerCase"), method_toLocaleLowerCase); - defineDefaultProperty(engine, QStringLiteral("toUpperCase"), method_toUpperCase); - defineDefaultProperty(engine, QStringLiteral("toLocaleUpperCase"), method_toLocaleUpperCase); - defineDefaultProperty(engine, QStringLiteral("trim"), method_trim); + ctor.objectValue()->defineDefaultProperty(QStringLiteral("fromCharCode"), method_fromCharCode, 1); + + defineDefaultProperty(QStringLiteral("constructor"), ctor); + defineDefaultProperty(QStringLiteral("toString"), method_toString); + defineDefaultProperty(QStringLiteral("valueOf"), method_toString); // valueOf and toString are identical + defineDefaultProperty(QStringLiteral("charAt"), method_charAt, 1); + defineDefaultProperty(QStringLiteral("charCodeAt"), method_charCodeAt, 1); + defineDefaultProperty(QStringLiteral("concat"), method_concat, 1); + defineDefaultProperty(QStringLiteral("indexOf"), method_indexOf, 1); + defineDefaultProperty(QStringLiteral("lastIndexOf"), method_lastIndexOf, 1); + defineDefaultProperty(QStringLiteral("localeCompare"), method_localeCompare, 1); + defineDefaultProperty(QStringLiteral("match"), method_match, 1); + defineDefaultProperty(QStringLiteral("replace"), method_replace, 2); + defineDefaultProperty(QStringLiteral("search"), method_search, 1); + defineDefaultProperty(QStringLiteral("slice"), method_slice, 2); + defineDefaultProperty(QStringLiteral("split"), method_split, 2); + defineDefaultProperty(QStringLiteral("substr"), method_substr, 2); + defineDefaultProperty(QStringLiteral("substring"), method_substring, 2); + defineDefaultProperty(QStringLiteral("toLowerCase"), method_toLowerCase); + defineDefaultProperty(QStringLiteral("toLocaleLowerCase"), method_toLocaleLowerCase); + defineDefaultProperty(QStringLiteral("toUpperCase"), method_toUpperCase); + defineDefaultProperty(QStringLiteral("toLocaleUpperCase"), method_toLocaleUpperCase); + defineDefaultProperty(QStringLiteral("trim"), method_trim); } static QString getThisString(ExecutionContext *ctx) diff --git a/src/qml/jsruntime/qv4variantobject.cpp b/src/qml/jsruntime/qv4variantobject.cpp index cea946b66b..19a08a9ce7 100644 --- a/src/qml/jsruntime/qv4variantobject.cpp +++ b/src/qml/jsruntime/qv4variantobject.cpp @@ -144,12 +144,12 @@ VariantPrototype::VariantPrototype(InternalClass *ic) { } -void VariantPrototype::init(ExecutionEngine *engine) +void VariantPrototype::init() { - defineDefaultProperty(engine, QStringLiteral("preserve"), method_preserve, 0); - defineDefaultProperty(engine, QStringLiteral("destroy"), method_destroy, 0); - defineDefaultProperty(engine, QStringLiteral("valueOf"), method_valueOf, 0); - defineDefaultProperty(engine, QStringLiteral("toString"), method_toString, 0); + defineDefaultProperty(QStringLiteral("preserve"), method_preserve, 0); + defineDefaultProperty(QStringLiteral("destroy"), method_destroy, 0); + defineDefaultProperty(QStringLiteral("valueOf"), method_valueOf, 0); + defineDefaultProperty(QStringLiteral("toString"), method_toString, 0); } QV4::ReturnedValue VariantPrototype::method_preserve(SimpleCallContext *ctx) diff --git a/src/qml/jsruntime/qv4variantobject_p.h b/src/qml/jsruntime/qv4variantobject_p.h index 60a48374b0..65c1db0d88 100644 --- a/src/qml/jsruntime/qv4variantobject_p.h +++ b/src/qml/jsruntime/qv4variantobject_p.h @@ -87,7 +87,7 @@ struct VariantPrototype : VariantObject public: VariantPrototype(InternalClass *ic); - void init(ExecutionEngine *engine); + void init(); static ReturnedValue method_preserve(SimpleCallContext *ctx); static ReturnedValue method_destroy(SimpleCallContext *ctx); |