diff options
-rw-r--r-- | src/imports/dialogs-private/qquickfontlistmodel.cpp | 2 | ||||
-rw-r--r-- | src/imports/dialogs-private/qquickwritingsystemlistmodel.cpp | 2 | ||||
-rw-r--r-- | src/imports/localstorage/plugin.cpp | 16 | ||||
-rw-r--r-- | src/imports/testlib/main.cpp | 2 | ||||
-rw-r--r-- | src/imports/xmllistmodel/qqmlxmllistmodel.cpp | 2 | ||||
-rw-r--r-- | src/qml/compiler/qv4codegen.cpp | 8 | ||||
-rw-r--r-- | src/qml/compiler/qv4ssa.cpp | 10 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4dateobject.cpp | 6 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4numberobject.cpp | 2 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4object_p.h | 2 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4runtime.cpp | 6 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4stringobject.cpp | 4 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4value.cpp | 8 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4value_def_p.h | 11 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4value_p.h | 2 |
15 files changed, 42 insertions, 41 deletions
diff --git a/src/imports/dialogs-private/qquickfontlistmodel.cpp b/src/imports/dialogs-private/qquickfontlistmodel.cpp index 327f214145..96d1824ef6 100644 --- a/src/imports/dialogs-private/qquickfontlistmodel.cpp +++ b/src/imports/dialogs-private/qquickfontlistmodel.cpp @@ -221,7 +221,7 @@ QQmlV4Handle QQuickFontListModel::get(int idx) const ScopedString s(scope); for (int ii = 0; ii < d->roleNames.keys().count(); ++ii) { Property *p = o->insertMember((s = v4engine->newIdentifier(d->roleNames[Qt::UserRole + ii + 1])), PropertyAttributes()); - p->value = Value::fromReturnedValue(v8engine->fromVariant(data(index(idx, 0), Qt::UserRole + ii + 1))); + p->value = v8engine->fromVariant(data(index(idx, 0), Qt::UserRole + ii + 1)); } return QQmlV4Handle(o); diff --git a/src/imports/dialogs-private/qquickwritingsystemlistmodel.cpp b/src/imports/dialogs-private/qquickwritingsystemlistmodel.cpp index 0183d67017..f2b4ff8b8f 100644 --- a/src/imports/dialogs-private/qquickwritingsystemlistmodel.cpp +++ b/src/imports/dialogs-private/qquickwritingsystemlistmodel.cpp @@ -159,7 +159,7 @@ QQmlV4Handle QQuickWritingSystemListModel::get(int idx) const ScopedString s(scope); for (int ii = 0; ii < d->roleNames.keys().count(); ++ii) { Property *p = o->insertMember((s = v4engine->newIdentifier(d->roleNames[Qt::UserRole + ii + 1])), PropertyAttributes()); - p->value = Value::fromReturnedValue(v8engine->fromVariant(data(index(idx, 0), Qt::UserRole + ii + 1))); + p->value = v8engine->fromVariant(data(index(idx, 0), Qt::UserRole + ii + 1)); } return QQmlV4Handle(o); diff --git a/src/imports/localstorage/plugin.cpp b/src/imports/localstorage/plugin.cpp index fdce3fe99e..1e0247cc54 100644 --- a/src/imports/localstorage/plugin.cpp +++ b/src/imports/localstorage/plugin.cpp @@ -131,7 +131,7 @@ static ReturnedValue qmlsqldatabase_version(SimpleCallContext *ctx) if (!r || r->type != QQmlSqlDatabaseWrapper::Database) V4THROW_REFERENCE("Not a SQLDatabase object"); - return Value::fromString(ctx->engine->newString(r->version)).asReturnedValue(); + return Encode(ctx->engine->newString(r->version)); } static ReturnedValue qmlsqldatabase_rows_length(SimpleCallContext *ctx) @@ -295,7 +295,7 @@ static ReturnedValue qmlsqldatabase_executeSql(SimpleCallContext *ctx) } } if (query.exec()) { - QQmlSqlDatabaseWrapper *rows = new (ctx->engine->memoryManager) QQmlSqlDatabaseWrapper(engine); + QV4::Scoped<QQmlSqlDatabaseWrapper> rows(scope, new (ctx->engine->memoryManager) QQmlSqlDatabaseWrapper(engine)); QV4::ScopedObject p(scope, databaseData(engine)->rowsProto.value()); rows->setPrototype(p.getPointer()); rows->type = QQmlSqlDatabaseWrapper::Rows; @@ -309,7 +309,7 @@ static ReturnedValue qmlsqldatabase_executeSql(SimpleCallContext *ctx) ScopedValue v(scope); resultObject->put((s = ctx->engine->newIdentifier("rowsAffected")), (v = Primitive::fromInt32(query.numRowsAffected()))); resultObject->put((s = ctx->engine->newIdentifier("insertId")), (v = engine->toString(query.lastInsertId().toString()))); - resultObject->put((s = ctx->engine->newIdentifier("rows")), (v = Value::fromObject(rows))); + resultObject->put((s = ctx->engine->newIdentifier("rows")), rows); } else { err = true; } @@ -343,8 +343,8 @@ static ReturnedValue qmlsqldatabase_changeVersion(SimpleCallContext *ctx) if (from_version != r->version) V4THROW_SQL(SQLEXCEPTION_VERSION_ERR, QQmlEngine::tr("Version mismatch: expected %1, found %2").arg(from_version).arg(r->version)); - QQmlSqlDatabaseWrapper *w = new (ctx->engine->memoryManager) QQmlSqlDatabaseWrapper(engine); - QV4::ScopedObject p(scope, databaseData(engine)->queryProto.value()); + Scoped<QQmlSqlDatabaseWrapper> w(scope, new (ctx->engine->memoryManager) QQmlSqlDatabaseWrapper(engine)); + ScopedObject p(scope, databaseData(engine)->queryProto.value()); w->setPrototype(p.getPointer()); w->type = QQmlSqlDatabaseWrapper::Query; w->database = db; @@ -358,7 +358,7 @@ static ReturnedValue qmlsqldatabase_changeVersion(SimpleCallContext *ctx) ScopedCallData callData(scope, 1); callData->thisObject = engine->global(); - callData->args[0] = Value::fromObject(w); + callData->args[0] = w; try { callback->call(callData); } catch (Exception &) { @@ -401,7 +401,7 @@ static ReturnedValue qmlsqldatabase_transaction_shared(SimpleCallContext *ctx, b QSqlDatabase db = r->database; - QQmlSqlDatabaseWrapper *w = new (ctx->engine->memoryManager) QQmlSqlDatabaseWrapper(engine); + Scoped<QQmlSqlDatabaseWrapper> w(scope, new (ctx->engine->memoryManager) QQmlSqlDatabaseWrapper(engine)); QV4::ScopedObject p(scope, databaseData(engine)->queryProto.value()); w->setPrototype(p.getPointer()); w->type = QQmlSqlDatabaseWrapper::Query; @@ -414,7 +414,7 @@ static ReturnedValue qmlsqldatabase_transaction_shared(SimpleCallContext *ctx, b if (callback) { ScopedCallData callData(scope, 1); callData->thisObject = engine->global(); - callData->args[0] = Value::fromObject(w); + callData->args[0] = w; try { callback->call(callData); } catch (Exception &) { diff --git a/src/imports/testlib/main.cpp b/src/imports/testlib/main.cpp index 47570afbda..3d0954768a 100644 --- a/src/imports/testlib/main.cpp +++ b/src/imports/testlib/main.cpp @@ -100,7 +100,7 @@ public Q_SLOTS: QQmlEngine *engine = qmlEngine(this); QV4::ExecutionEngine *v4 = QV8Engine::getV4(engine->handle()); QV4::Scope scope(v4); - QV4::ScopedValue s(scope, QV4::Value::fromString(v4->newString(name))); + QV4::ScopedValue s(scope, v4->newString(name)); return QQmlV4Handle(s); } diff --git a/src/imports/xmllistmodel/qqmlxmllistmodel.cpp b/src/imports/xmllistmodel/qqmlxmllistmodel.cpp index c32fefe974..67504c7668 100644 --- a/src/imports/xmllistmodel/qqmlxmllistmodel.cpp +++ b/src/imports/xmllistmodel/qqmlxmllistmodel.cpp @@ -928,7 +928,7 @@ QQmlV4Handle QQuickXmlListModel::get(int index) const for (int ii = 0; ii < d->roleObjects.count(); ++ii) { ScopedString name(scope, v4engine->newIdentifier(d->roleObjects[ii]->name())); Property *p = o->insertMember(name, PropertyAttributes()); - p->value = Value::fromReturnedValue(v8engine->fromVariant(d->data.value(ii).value(index))); + p->value = v8engine->fromVariant(d->data.value(ii).value(index)); } return QQmlV4Handle(o); diff --git a/src/qml/compiler/qv4codegen.cpp b/src/qml/compiler/qv4codegen.cpp index bf2cb8e5c5..74aa0892f9 100644 --- a/src/qml/compiler/qv4codegen.cpp +++ b/src/qml/compiler/qv4codegen.cpp @@ -556,7 +556,7 @@ V4IR::Expr *Codegen::unop(V4IR::AluOp op, V4IR::Expr *expr) case V4IR::OpUPlus: return expr; case V4IR::OpCompl: - return _block->CONST(V4IR::NumberType, ~QV4::Value::toInt32(c->value)); + return _block->CONST(V4IR::NumberType, ~QV4::Primitive::toInt32(c->value)); case V4IR::OpIncrement: return _block->CONST(V4IR::NumberType, c->value + 1); case V4IR::OpDecrement: @@ -595,13 +595,13 @@ V4IR::Expr *Codegen::binop(V4IR::AluOp op, V4IR::Expr *left, V4IR::Expr *right) case V4IR::OpGt: return _block->CONST(V4IR::BoolType, c1->value > c2->value); case V4IR::OpLe: return _block->CONST(V4IR::BoolType, c1->value <= c2->value); case V4IR::OpLt: return _block->CONST(V4IR::BoolType, c1->value < c2->value); - case V4IR::OpLShift: return _block->CONST(V4IR::NumberType, QV4::Value::toInt32(c1->value) << (QV4::Value::toUInt32(c2->value) & 0x1f)); + case V4IR::OpLShift: return _block->CONST(V4IR::NumberType, QV4::Primitive::toInt32(c1->value) << (QV4::Primitive::toUInt32(c2->value) & 0x1f)); case V4IR::OpMod: return _block->CONST(V4IR::NumberType, std::fmod(c1->value, c2->value)); case V4IR::OpMul: return _block->CONST(V4IR::NumberType, c1->value * c2->value); case V4IR::OpOr: return _block->CONST(V4IR::NumberType, c1->value ? c1->value : c2->value); - case V4IR::OpRShift: return _block->CONST(V4IR::NumberType, QV4::Value::toInt32(c1->value) >> (QV4::Value::toUInt32(c2->value) & 0x1f)); + case V4IR::OpRShift: return _block->CONST(V4IR::NumberType, QV4::Primitive::toInt32(c1->value) >> (QV4::Primitive::toUInt32(c2->value) & 0x1f)); case V4IR::OpSub: return _block->CONST(V4IR::NumberType, c1->value - c2->value); - case V4IR::OpURShift: return _block->CONST(V4IR::NumberType,QV4::Value::toUInt32(c1->value) >> (QV4::Value::toUInt32(c2->value) & 0x1f)); + case V4IR::OpURShift: return _block->CONST(V4IR::NumberType,QV4::Primitive::toUInt32(c1->value) >> (QV4::Primitive::toUInt32(c2->value) & 0x1f)); case V4IR::OpInstanceof: case V4IR::OpIn: diff --git a/src/qml/compiler/qv4ssa.cpp b/src/qml/compiler/qv4ssa.cpp index f39517b647..13820851e7 100644 --- a/src/qml/compiler/qv4ssa.cpp +++ b/src/qml/compiler/qv4ssa.cpp @@ -1583,10 +1583,10 @@ public: case DoubleType: break; case SInt32Type: - c->value = QV4::Value::toInt32(c->value); + c->value = QV4::Primitive::toInt32(c->value); break; case UInt32Type: - c->value = QV4::Value::toUInt32(c->value); + c->value = QV4::Primitive::toUInt32(c->value); break; case BoolType: c->value = !(c->value == 0 || std::isnan(c->value)); @@ -1626,9 +1626,9 @@ protected: virtual void visitConst(Const *c) { if (_ty & NumberType && c->type & NumberType) { if (_ty == SInt32Type) - c->value = QV4::Value::toInt32(c->value); + c->value = QV4::Primitive::toInt32(c->value); else if (_ty == UInt32Type) - c->value = QV4::Value::toUInt32(c->value); + c->value = QV4::Primitive::toUInt32(c->value); c->type = _ty; } } @@ -2347,7 +2347,7 @@ void optimizeSSA(Function *function, DefUsesCalculator &defUses) doneSomething = true; break; case OpCompl: - constOperand->value = ~QV4::Value::toInt32(constOperand->value); + constOperand->value = ~QV4::Primitive::toInt32(constOperand->value); constOperand->type = SInt32Type; doneSomething = true; break; diff --git a/src/qml/jsruntime/qv4dateobject.cpp b/src/qml/jsruntime/qv4dateobject.cpp index 2ecd80c58d..d18f3eb681 100644 --- a/src/qml/jsruntime/qv4dateobject.cpp +++ b/src/qml/jsruntime/qv4dateobject.cpp @@ -212,7 +212,7 @@ static inline double MonthFromTime(double t) static inline double DateFromTime(double t) { - int m = (int) Value::toInteger(MonthFromTime(t)); + int m = (int) Primitive::toInteger(MonthFromTime(t)); double d = DayWithinYear(t); double l = InLeapYear(t); @@ -336,7 +336,7 @@ static inline double TimeClip(double t) { if (! qIsFinite(t) || fabs(t) > 8.64e15) return qSNaN(); - return Value::toInteger(t); + return Primitive::toInteger(t); } static inline double ParseString(const QString &s) @@ -1193,7 +1193,7 @@ ReturnedValue DatePrototype::method_setYear(SimpleCallContext *ctx) if (std::isnan(year)) { r = qSNaN(); } else { - if ((Value::toInteger(year) >= 0) && (Value::toInteger(year) <= 99)) + if ((Primitive::toInteger(year) >= 0) && (Primitive::toInteger(year) <= 99)) year += 1900; r = MakeDay(year, MonthFromTime(t), DateFromTime(t)); r = UTC(MakeDate(r, TimeWithinDay(t))); diff --git a/src/qml/jsruntime/qv4numberobject.cpp b/src/qml/jsruntime/qv4numberobject.cpp index c8169c0706..c641d2c9e0 100644 --- a/src/qml/jsruntime/qv4numberobject.cpp +++ b/src/qml/jsruntime/qv4numberobject.cpp @@ -134,7 +134,7 @@ ReturnedValue NumberPrototype::method_toString(SimpleCallContext *ctx) num = -num; } double frac = num - ::floor(num); - num = Value::toInteger(num); + num = Primitive::toInteger(num); do { char c = (char)::fmod(num, radix); c = (c < 10) ? (c + '0') : (c - 10 + 'a'); diff --git a/src/qml/jsruntime/qv4object_p.h b/src/qml/jsruntime/qv4object_p.h index 3f483b03d9..1ec747de34 100644 --- a/src/qml/jsruntime/qv4object_p.h +++ b/src/qml/jsruntime/qv4object_p.h @@ -385,7 +385,7 @@ inline uint Object::arrayLength() const Value v = memberData[ArrayObject::LengthPropertyIndex].value; if (v.isInteger()) return v.integerValue(); - return Value::toUInt32(v.doubleValue()); + return Primitive::toUInt32(v.doubleValue()); } return 0; } diff --git a/src/qml/jsruntime/qv4runtime.cpp b/src/qml/jsruntime/qv4runtime.cpp index ec164500cc..d18eeed240 100644 --- a/src/qml/jsruntime/qv4runtime.cpp +++ b/src/qml/jsruntime/qv4runtime.cpp @@ -216,7 +216,7 @@ void __qmljs_numberToString(QString *result, double num, int radix) } double frac = num - ::floor(num); - num = Value::toInteger(num); + num = Primitive::toInteger(num); do { char c = (char)::fmod(num, radix); @@ -1294,7 +1294,7 @@ int __qmljs_value_to_int32(const ValueRef value) int __qmljs_double_to_int32(const double &d) { - return Value::toInt32(d); + return Primitive::toInt32(d); } unsigned __qmljs_value_to_uint32(const ValueRef value) @@ -1304,7 +1304,7 @@ unsigned __qmljs_value_to_uint32(const ValueRef value) unsigned __qmljs_double_to_uint32(const double &d) { - return Value::toUInt32(d); + return Primitive::toUInt32(d); } ReturnedValue __qmljs_value_from_string(String *string) diff --git a/src/qml/jsruntime/qv4stringobject.cpp b/src/qml/jsruntime/qv4stringobject.cpp index 78b5af1313..402798f5ba 100644 --- a/src/qml/jsruntime/qv4stringobject.cpp +++ b/src/qml/jsruntime/qv4stringobject.cpp @@ -703,8 +703,8 @@ ReturnedValue StringPrototype::method_substr(SimpleCallContext *context) length = qMin(qMax(length, 0.0), count - start); - qint32 x = Value::toInt32(start); - qint32 y = Value::toInt32(length); + qint32 x = Primitive::toInt32(start); + qint32 y = Primitive::toInt32(length); return Value::fromString(context, value.mid(x, y)).asReturnedValue(); } diff --git a/src/qml/jsruntime/qv4value.cpp b/src/qml/jsruntime/qv4value.cpp index 51f7fba6d3..b256b04da0 100644 --- a/src/qml/jsruntime/qv4value.cpp +++ b/src/qml/jsruntime/qv4value.cpp @@ -79,7 +79,7 @@ double Value::toInteger() const if (integerCompatible()) return int_32; - return Value::toInteger(toNumber()); + return Primitive::toInteger(toNumber()); } double Value::toNumberImpl() const @@ -213,7 +213,7 @@ Value Value::fromString(ExecutionEngine *engine, const QString &s) } -int Value::toInt32(double number) +int Primitive::toInt32(double number) { const double D32 = 4294967296.0; const double D31 = D32 / 2.0; @@ -239,7 +239,7 @@ int Value::toInt32(double number) return int(number); } -unsigned int Value::toUInt32(double number) +unsigned int Primitive::toUInt32(double number) { const double D32 = 4294967296.0; if ((number >= 0 && number < D32)) @@ -260,7 +260,7 @@ unsigned int Value::toUInt32(double number) return unsigned(number); } -double Value::toInteger(double number) +double Primitive::toInteger(double number) { if (std::isnan(number)) return +0; diff --git a/src/qml/jsruntime/qv4value_def_p.h b/src/qml/jsruntime/qv4value_def_p.h index 188952bdd7..2f2a754864 100644 --- a/src/qml/jsruntime/qv4value_def_p.h +++ b/src/qml/jsruntime/qv4value_def_p.h @@ -283,10 +283,6 @@ struct Q_QML_EXPORT Value static Value fromString(ExecutionEngine *engine, const QString &s); #endif - static double toInteger(double fromNumber); - static int toInt32(double value); - static unsigned int toUInt32(double value); - int toUInt16() const; int toInt32() const; unsigned int toUInt32() const; @@ -328,6 +324,7 @@ struct Q_QML_EXPORT Value ReturnedValue asReturnedValue() const { return val; } static Value fromReturnedValue(ReturnedValue val) { Value v; v.val = val; return v; } + Value &operator=(ReturnedValue v) { val = v; return *this; } // Section 9.12 bool sameValue(Value other) const; @@ -356,7 +353,7 @@ struct SafeValue : public Value Returned<T> *as(); }; -struct Primitive : public Value +struct Q_QML_EXPORT Primitive : public Value { static Primitive fromBoolean(bool b); static Primitive fromInt32(int i); @@ -365,6 +362,10 @@ struct Primitive : public Value static Primitive fromDouble(double d); static Primitive fromUInt32(uint i); + static double toInteger(double fromNumber); + static int toInt32(double value); + static unsigned int toUInt32(double value); + inline operator ValueRef(); Value asValue() const { return *this; } }; diff --git a/src/qml/jsruntime/qv4value_p.h b/src/qml/jsruntime/qv4value_p.h index ba015958dc..7934682a03 100644 --- a/src/qml/jsruntime/qv4value_p.h +++ b/src/qml/jsruntime/qv4value_p.h @@ -228,7 +228,7 @@ inline int Value::toInt32() const if ((d >= -D31 && d < D31)) return static_cast<int>(d); - return Value::toInt32(d); + return Primitive::toInt32(d); } inline unsigned int Value::toUInt32() const |