diff options
author | Lars Knoll <lars.knoll@digia.com> | 2013-09-09 11:07:21 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-09-11 13:02:19 +0200 |
commit | 6324e987e23b4fefc622f1fc6493baa1a3e47ee9 (patch) | |
tree | d06619a7feea6034b13c6ee4111d7ad65a064558 /src/qml | |
parent | ed4c36b0b86c3d452a96ceb8bb6b41d709543a45 (diff) |
More work on converting calling conventions to fit the new GC scheme
Change-Id: I4283cc85ad599b62a8efbe9268680287cf74097e
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml')
-rw-r--r-- | src/qml/jsruntime/qv4runtime.cpp | 71 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4runtime_p.h | 22 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4sparsearray.cpp | 2 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4vme_moth.cpp | 22 |
4 files changed, 61 insertions, 56 deletions
diff --git a/src/qml/jsruntime/qv4runtime.cpp b/src/qml/jsruntime/qv4runtime.cpp index 43db0b63de..2a3f96429c 100644 --- a/src/qml/jsruntime/qv4runtime.cpp +++ b/src/qml/jsruntime/qv4runtime.cpp @@ -823,12 +823,12 @@ void __qmljs_call_property_lookup(ExecutionContext *context, ValueRef result, ui *result = res; } -void __qmljs_call_element(ExecutionContext *context, ValueRef result, const Value &index, CallDataRef callData) +void __qmljs_call_element(ExecutionContext *context, ValueRef result, const ValueRef index, CallDataRef callData) { Object *baseObject = callData->thisObject.toObject(context); callData->thisObject = Value::fromObject(baseObject); - Object *o = baseObject->get(index.toString(context)).asObject(); + Object *o = baseObject->get(index->toString(context)).asObject(); if (!o) context->throwTypeError(); @@ -837,9 +837,9 @@ void __qmljs_call_element(ExecutionContext *context, ValueRef result, const Valu *result = res; } -void __qmljs_call_value(ExecutionContext *context, ValueRef result, const Value &func, CallDataRef callData) +void __qmljs_call_value(ExecutionContext *context, ValueRef result, const ValueRef func, CallDataRef callData) { - Object *o = func.asObject(); + Object *o = func->asObject(); if (!o) context->throwTypeError(); @@ -880,9 +880,9 @@ void __qmljs_construct_activation_property(ExecutionContext *context, ValueRef r *result = res; } -void __qmljs_construct_value(ExecutionContext *context, ValueRef result, const Value &func, CallDataRef callData) +void __qmljs_construct_value(ExecutionContext *context, ValueRef result, const ValueRef func, CallDataRef callData) { - Object *f = func.asObject(); + Object *f = func->asObject(); if (!f) context->throwTypeError(); @@ -891,9 +891,9 @@ void __qmljs_construct_value(ExecutionContext *context, ValueRef result, const V *result = res; } -void __qmljs_construct_property(ExecutionContext *context, ValueRef result, const Value &base, String *name, CallDataRef callData) +void __qmljs_construct_property(ExecutionContext *context, ValueRef result, const ValueRef base, String *name, CallDataRef callData) { - Object *thisObject = base.toObject(context); + Object *thisObject = base->toObject(context); Value func = thisObject->get(name); Object *f = func.asObject(); @@ -910,12 +910,12 @@ void __qmljs_throw(ExecutionContext *context, const Value &value) Exception::throwException(context, value); } -void __qmljs_builtin_typeof(ExecutionContext *ctx, ValueRef result, const Value &value) +void __qmljs_builtin_typeof(ExecutionContext *ctx, ValueRef result, const ValueRef value) { if (!result) return; String *res = 0; - switch (value.type()) { + switch (value->type()) { case Value::Undefined_Type: res = ctx->engine->id_undefined; break; @@ -929,7 +929,7 @@ void __qmljs_builtin_typeof(ExecutionContext *ctx, ValueRef result, const Value res = ctx->engine->id_string; break; case Value::Object_Type: - if (value.objectValue()->asFunctionObject()) + if (value->objectValue()->asFunctionObject()) res = ctx->engine->id_function; else res = ctx->engine->id_object; // ### implementation-defined @@ -943,29 +943,34 @@ void __qmljs_builtin_typeof(ExecutionContext *ctx, ValueRef result, const Value void __qmljs_builtin_typeof_name(ExecutionContext *context, ValueRef result, String *name) { - Value res; - __qmljs_builtin_typeof(context, &res, context->getPropertyNoThrow(name)); + ValueScope scope(context); + ScopedValue res(scope); + ScopedValue prop(scope, context->getPropertyNoThrow(name)); + __qmljs_builtin_typeof(context, res, prop); if (result) *result = res; } -void __qmljs_builtin_typeof_member(ExecutionContext *context, ValueRef result, const Value &base, +void __qmljs_builtin_typeof_member(ExecutionContext *context, ValueRef result, const ValueRef base, String *name) { - Object *obj = base.toObject(context); - Value res; - __qmljs_builtin_typeof(context, &res, obj->get(name)); + ValueScope scope(context); + Object *obj = base->toObject(context); + ScopedValue res(scope); + ScopedValue prop(scope, obj->get(name)); + __qmljs_builtin_typeof(context, res, prop); if (result) *result = res; } -void __qmljs_builtin_typeof_element(ExecutionContext *context, ValueRef result, const Value &base, - const Value &index) +void __qmljs_builtin_typeof_element(ExecutionContext *context, ValueRef result, const ValueRef base, const ValueRef index) { - String *name = index.toString(context); - Object *obj = base.toObject(context); - Value res; - __qmljs_builtin_typeof(context, &res, obj->get(name)); + ValueScope scope(context); + String *name = index->toString(context); + Object *obj = base->toObject(context); + ScopedValue res(scope); + ScopedValue prop(scope, obj->get(name)); + __qmljs_builtin_typeof(context, res, prop); if (result) *result = res; } @@ -1003,9 +1008,9 @@ void __qmljs_builtin_post_increment_name(ExecutionContext *context, ValueRef res context->setProperty(name, v); } -void __qmljs_builtin_post_increment_member(ExecutionContext *context, ValueRef result, const Value &base, String *name) +void __qmljs_builtin_post_increment_member(ExecutionContext *context, ValueRef result, const ValueRef base, String *name) { - Object *o = base.toObject(context); + Object *o = base->toObject(context); Value v = o->get(name); @@ -1023,9 +1028,9 @@ void __qmljs_builtin_post_increment_member(ExecutionContext *context, ValueRef r o->put(name, v); } -void __qmljs_builtin_post_increment_element(ExecutionContext *context, ValueRef result, const Value &base, const Value *index) +void __qmljs_builtin_post_increment_element(ExecutionContext *context, ValueRef result, const ValueRef base, const ValueRef index) { - Object *o = base.toObject(context); + Object *o = base->toObject(context); uint idx = index->asArrayIndex(); @@ -1083,9 +1088,9 @@ void __qmljs_builtin_post_decrement_name(ExecutionContext *context, ValueRef res context->setProperty(name, v); } -void __qmljs_builtin_post_decrement_member(ExecutionContext *context, ValueRef result, const Value &base, String *name) +void __qmljs_builtin_post_decrement_member(ExecutionContext *context, ValueRef result, const ValueRef base, String *name) { - Object *o = base.toObject(context); + Object *o = base->toObject(context); Value v = o->get(name); @@ -1103,14 +1108,14 @@ void __qmljs_builtin_post_decrement_member(ExecutionContext *context, ValueRef r o->put(name, v); } -void __qmljs_builtin_post_decrement_element(ExecutionContext *context, ValueRef result, const Value &base, const Value &index) +void __qmljs_builtin_post_decrement_element(ExecutionContext *context, ValueRef result, const ValueRef base, const ValueRef index) { - Object *o = base.toObject(context); + Object *o = base->toObject(context); - uint idx = index.asArrayIndex(); + uint idx = index->asArrayIndex(); if (idx == UINT_MAX) { - String *s = index.toString(context); + String *s = index->toString(context); return __qmljs_builtin_post_decrement_member(context, result, base, s); } diff --git a/src/qml/jsruntime/qv4runtime_p.h b/src/qml/jsruntime/qv4runtime_p.h index 5c941d4b5d..ea4643f2a9 100644 --- a/src/qml/jsruntime/qv4runtime_p.h +++ b/src/qml/jsruntime/qv4runtime_p.h @@ -94,27 +94,27 @@ struct InternalClass; void __qmljs_call_activation_property(QV4::ExecutionContext *, QV4::ValueRef result, QV4::String *name, CallDataRef callData); void __qmljs_call_property(QV4::ExecutionContext *context, QV4::ValueRef result, QV4::String *name, CallDataRef callData); void __qmljs_call_property_lookup(ExecutionContext *context, ValueRef result, uint index, CallDataRef callData); -void __qmljs_call_element(ExecutionContext *context, ValueRef result, const Value &index, CallDataRef callData); -void __qmljs_call_value(QV4::ExecutionContext *context, QV4::ValueRef result, const QV4::Value &func, CallDataRef callData); +void __qmljs_call_element(ExecutionContext *context, ValueRef result, const ValueRef index, CallDataRef callData); +void __qmljs_call_value(QV4::ExecutionContext *context, QV4::ValueRef result, const QV4::ValueRef func, CallDataRef callData); void __qmljs_construct_activation_property(QV4::ExecutionContext *, QV4::ValueRef result, QV4::String *name, CallDataRef callData); -void __qmljs_construct_property(QV4::ExecutionContext *context, QV4::ValueRef result, const QV4::Value &base, QV4::String *name, CallDataRef callData); -void __qmljs_construct_value(QV4::ExecutionContext *context, QV4::ValueRef result, const QV4::Value &func, CallDataRef callData); +void __qmljs_construct_property(QV4::ExecutionContext *context, QV4::ValueRef result, const QV4::ValueRef base, QV4::String *name, CallDataRef callData); +void __qmljs_construct_value(QV4::ExecutionContext *context, QV4::ValueRef result, const QV4::ValueRef func, CallDataRef callData); -void __qmljs_builtin_typeof(QV4::ExecutionContext *ctx, QV4::ValueRef result, const QV4::Value &val); +void __qmljs_builtin_typeof(QV4::ExecutionContext *ctx, QV4::ValueRef result, const QV4::ValueRef val); void __qmljs_builtin_typeof_name(QV4::ExecutionContext *context, QV4::ValueRef result, QV4::String *name); -void __qmljs_builtin_typeof_member(QV4::ExecutionContext* context, QV4::ValueRef result, const QV4::Value &base, QV4::String *name); -void __qmljs_builtin_typeof_element(QV4::ExecutionContext* context, QV4::ValueRef result, const QV4::Value &base, const QV4::Value &index); +void __qmljs_builtin_typeof_member(QV4::ExecutionContext* context, QV4::ValueRef result, const QV4::ValueRef base, QV4::String *name); +void __qmljs_builtin_typeof_element(QV4::ExecutionContext* context, QV4::ValueRef result, const QV4::ValueRef base, const QV4::ValueRef index); void __qmljs_builtin_post_increment(QV4::ValueRef result, QV4::ValueRef val); void __qmljs_builtin_post_increment_name(QV4::ExecutionContext *context, QV4::ValueRef result, QV4::String *name); -void __qmljs_builtin_post_increment_member(QV4::ExecutionContext *context, QV4::ValueRef result, const QV4::Value &base, QV4::String *name); -void __qmljs_builtin_post_increment_element(QV4::ExecutionContext *context, QV4::ValueRef result, const QV4::Value &base, const QV4::Value *index); +void __qmljs_builtin_post_increment_member(QV4::ExecutionContext *context, QV4::ValueRef result, const QV4::ValueRef base, QV4::String *name); +void __qmljs_builtin_post_increment_element(QV4::ExecutionContext *context, QV4::ValueRef result, const QV4::ValueRef base, const QV4::ValueRef index); void __qmljs_builtin_post_decrement(QV4::ValueRef result, QV4::ValueRef val); void __qmljs_builtin_post_decrement_name(QV4::ExecutionContext *context, QV4::ValueRef result, QV4::String *name); -void __qmljs_builtin_post_decrement_member(QV4::ExecutionContext *context, QV4::ValueRef result, const QV4::Value &base, QV4::String *name); -void __qmljs_builtin_post_decrement_element(QV4::ExecutionContext *context, QV4::ValueRef result, const QV4::Value &base, const QV4::Value &index); +void __qmljs_builtin_post_decrement_member(QV4::ExecutionContext *context, QV4::ValueRef result, const QV4::ValueRef base, QV4::String *name); +void __qmljs_builtin_post_decrement_element(QV4::ExecutionContext *context, QV4::ValueRef result, const QV4::ValueRef base, const QV4::ValueRef index); void Q_NORETURN __qmljs_builtin_rethrow(QV4::ExecutionContext *context); QV4::ExecutionContext *__qmljs_builtin_push_with_scope(const QV4::Value &o, QV4::ExecutionContext *ctx); diff --git a/src/qml/jsruntime/qv4sparsearray.cpp b/src/qml/jsruntime/qv4sparsearray.cpp index 5b720d2fef..f21855ebc9 100644 --- a/src/qml/jsruntime/qv4sparsearray.cpp +++ b/src/qml/jsruntime/qv4sparsearray.cpp @@ -66,7 +66,7 @@ bool ArrayElementLessThan::operator()(const Property &p1, const Property &p2) co callData->args[0] = p1.value; callData->args[1] = p2.value; Value result = Value::undefinedValue(); - __qmljs_call_value(m_context, &result, m_comparefn, callData.ptr); + __qmljs_call_value(m_context, &result, QV4::ValueRef::fromRawValue(&m_comparefn), callData); return result.toNumber() <= 0; } return p1.value.toString(m_context)->toQString() < p2.value.toString(m_context)->toQString(); diff --git a/src/qml/jsruntime/qv4vme_moth.cpp b/src/qml/jsruntime/qv4vme_moth.cpp index cd8d2c8e4e..67b1e6135a 100644 --- a/src/qml/jsruntime/qv4vme_moth.cpp +++ b/src/qml/jsruntime/qv4vme_moth.cpp @@ -325,7 +325,7 @@ QV4::Value VME::run(QV4::ExecutionContext *context, const uchar *&code, callData->tag = 0; callData->argc = instr.argc; callData->thisObject = QV4::Value::undefinedValue(); - __qmljs_call_value(context, VALUEPTR(instr.result), VALUE(instr.dest), callData); + __qmljs_call_value(context, VALUEPTR(instr.result), VALUEPTR(instr.dest), callData); MOTH_END_INSTR(CallValue) MOTH_BEGIN_INSTR(CallProperty) @@ -344,7 +344,7 @@ QV4::Value VME::run(QV4::ExecutionContext *context, const uchar *&code, callData->tag = 0; callData->argc = instr.argc; callData->thisObject = VALUE(instr.base); - __qmljs_call_element(context, VALUEPTR(instr.result), VALUE(instr.index), callData); + __qmljs_call_element(context, VALUEPTR(instr.result), VALUEPTR(instr.index), callData); MOTH_END_INSTR(CallElement) MOTH_BEGIN_INSTR(CallActivationProperty) @@ -422,11 +422,11 @@ QV4::Value VME::run(QV4::ExecutionContext *context, const uchar *&code, MOTH_END_INSTR(CallBuiltinDeleteName) MOTH_BEGIN_INSTR(CallBuiltinTypeofMember) - __qmljs_builtin_typeof_member(context, VALUEPTR(instr.result), VALUE(instr.base), runtimeStrings[instr.member]); + __qmljs_builtin_typeof_member(context, VALUEPTR(instr.result), VALUEPTR(instr.base), runtimeStrings[instr.member]); MOTH_END_INSTR(CallBuiltinTypeofMember) MOTH_BEGIN_INSTR(CallBuiltinTypeofSubscript) - __qmljs_builtin_typeof_element(context, VALUEPTR(instr.result), VALUE(instr.base), VALUE(instr.index)); + __qmljs_builtin_typeof_element(context, VALUEPTR(instr.result), VALUEPTR(instr.base), VALUEPTR(instr.index)); MOTH_END_INSTR(CallBuiltinTypeofSubscript) MOTH_BEGIN_INSTR(CallBuiltinTypeofName) @@ -434,15 +434,15 @@ QV4::Value VME::run(QV4::ExecutionContext *context, const uchar *&code, MOTH_END_INSTR(CallBuiltinTypeofName) MOTH_BEGIN_INSTR(CallBuiltinTypeofValue) - __qmljs_builtin_typeof(context, VALUEPTR(instr.result), VALUE(instr.value)); + __qmljs_builtin_typeof(context, VALUEPTR(instr.result), VALUEPTR(instr.value)); MOTH_END_INSTR(CallBuiltinTypeofValue) MOTH_BEGIN_INSTR(CallBuiltinPostIncMember) - __qmljs_builtin_post_increment_member(context, VALUEPTR(instr.result), VALUE(instr.base), runtimeStrings[instr.member]); + __qmljs_builtin_post_increment_member(context, VALUEPTR(instr.result), VALUEPTR(instr.base), runtimeStrings[instr.member]); MOTH_END_INSTR(CallBuiltinTypeofMember) MOTH_BEGIN_INSTR(CallBuiltinPostIncSubscript) - __qmljs_builtin_post_increment_element(context, VALUEPTR(instr.result), VALUE(instr.base), VALUEPTR(instr.index)); + __qmljs_builtin_post_increment_element(context, VALUEPTR(instr.result), VALUEPTR(instr.base), VALUEPTR(instr.index)); MOTH_END_INSTR(CallBuiltinTypeofSubscript) MOTH_BEGIN_INSTR(CallBuiltinPostIncName) @@ -454,11 +454,11 @@ QV4::Value VME::run(QV4::ExecutionContext *context, const uchar *&code, MOTH_END_INSTR(CallBuiltinTypeofValue) MOTH_BEGIN_INSTR(CallBuiltinPostDecMember) - __qmljs_builtin_post_decrement_member(context, VALUEPTR(instr.result), VALUE(instr.base), runtimeStrings[instr.member]); + __qmljs_builtin_post_decrement_member(context, VALUEPTR(instr.result), VALUEPTR(instr.base), runtimeStrings[instr.member]); MOTH_END_INSTR(CallBuiltinTypeofMember) MOTH_BEGIN_INSTR(CallBuiltinPostDecSubscript) - __qmljs_builtin_post_decrement_element(context, VALUEPTR(instr.result), VALUE(instr.base), VALUE(instr.index)); + __qmljs_builtin_post_decrement_element(context, VALUEPTR(instr.result), VALUEPTR(instr.base), VALUEPTR(instr.index)); MOTH_END_INSTR(CallBuiltinTypeofSubscript) MOTH_BEGIN_INSTR(CallBuiltinPostDecName) @@ -502,7 +502,7 @@ QV4::Value VME::run(QV4::ExecutionContext *context, const uchar *&code, callData->tag = 0; callData->argc = instr.argc; callData->thisObject = QV4::Value::undefinedValue(); - __qmljs_construct_value(context, VALUEPTR(instr.result), VALUE(instr.func), callData); + __qmljs_construct_value(context, VALUEPTR(instr.result), VALUEPTR(instr.func), callData); MOTH_END_INSTR(CreateValue) MOTH_BEGIN_INSTR(CreateProperty) @@ -511,7 +511,7 @@ QV4::Value VME::run(QV4::ExecutionContext *context, const uchar *&code, callData->tag = 0; callData->argc = instr.argc; callData->thisObject = QV4::Value::undefinedValue(); - __qmljs_construct_property(context, VALUEPTR(instr.result), VALUE(instr.base), runtimeStrings[instr.name], callData); + __qmljs_construct_property(context, VALUEPTR(instr.result), VALUEPTR(instr.base), runtimeStrings[instr.name], callData); MOTH_END_INSTR(CreateProperty) MOTH_BEGIN_INSTR(CreateActivationProperty) |