aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/imports/dialogs-private/qquickfontlistmodel.cpp2
-rw-r--r--src/imports/dialogs-private/qquickwritingsystemlistmodel.cpp2
-rw-r--r--src/imports/localstorage/plugin.cpp16
-rw-r--r--src/imports/testlib/main.cpp2
-rw-r--r--src/imports/xmllistmodel/qqmlxmllistmodel.cpp2
-rw-r--r--src/qml/compiler/qv4codegen.cpp8
-rw-r--r--src/qml/compiler/qv4ssa.cpp10
-rw-r--r--src/qml/jsruntime/qv4dateobject.cpp6
-rw-r--r--src/qml/jsruntime/qv4numberobject.cpp2
-rw-r--r--src/qml/jsruntime/qv4object_p.h2
-rw-r--r--src/qml/jsruntime/qv4runtime.cpp6
-rw-r--r--src/qml/jsruntime/qv4stringobject.cpp4
-rw-r--r--src/qml/jsruntime/qv4value.cpp8
-rw-r--r--src/qml/jsruntime/qv4value_def_p.h11
-rw-r--r--src/qml/jsruntime/qv4value_p.h2
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