aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@digia.com>2013-09-26 12:04:52 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-09-28 13:33:46 +0200
commitd2e2a5b59c617e6cf7236cf36e9c20fe9ea36fdb (patch)
tree1fc21beff4add85e68a61b7c88b5d5f928bec6e8 /src/qml/qml
parent18d4794e3f614eec8594f6636d569af8bc112618 (diff)
Remove Value::fromString()
replaced with call to the GC safe ExceutionEngine::newString() method. Change-Id: I7258296e75ca724ff42b94a0d147bc33a05f8f68 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/qml')
-rw-r--r--src/qml/qml/qqmllocale.cpp32
-rw-r--r--src/qml/qml/qqmlobjectcreator.cpp5
-rw-r--r--src/qml/qml/v8/qqmlbuiltinfunctions.cpp26
-rw-r--r--src/qml/qml/v8/qv4domerrors_p.h2
-rw-r--r--src/qml/qml/v8/qv8engine.cpp4
5 files changed, 36 insertions, 33 deletions
diff --git a/src/qml/qml/qqmllocale.cpp b/src/qml/qml/qqmllocale.cpp
index 97ab56256e..e79f1582d9 100644
--- a/src/qml/qml/qqmllocale.cpp
+++ b/src/qml/qml/qqmllocale.cpp
@@ -151,7 +151,7 @@ QV4::ReturnedValue QQmlDateExtension::method_toLocaleString(QV4::SimpleCallConte
if (ctx->callData->argc == 0) {
// Use QLocale for standard toLocaleString() function
QLocale locale;
- return QV4::Value::fromString(ctx, locale.toString(dt)).asReturnedValue();
+ return ctx->engine->newString(locale.toString(dt))->asReturnedValue();
}
if (!isLocaleObject(ctx->callData->args[0]))
@@ -176,7 +176,7 @@ QV4::ReturnedValue QQmlDateExtension::method_toLocaleString(QV4::SimpleCallConte
formattedDt = r->locale.toString(dt, enumFormat);
}
- return QV4::Value::fromString(ctx, formattedDt).asReturnedValue();
+ return ctx->engine->newString(formattedDt)->asReturnedValue();
}
QV4::ReturnedValue QQmlDateExtension::method_toLocaleTimeString(QV4::SimpleCallContext *ctx)
@@ -196,7 +196,7 @@ QV4::ReturnedValue QQmlDateExtension::method_toLocaleTimeString(QV4::SimpleCallC
if (ctx->callData->argc == 0) {
// Use QLocale for standard toLocaleString() function
QLocale locale;
- return QV4::Value::fromString(ctx, locale.toString(time)).asReturnedValue();
+ return ctx->engine->newString(locale.toString(time))->asReturnedValue();
}
if (!isLocaleObject(ctx->callData->args[0]))
@@ -221,7 +221,7 @@ QV4::ReturnedValue QQmlDateExtension::method_toLocaleTimeString(QV4::SimpleCallC
formattedTime = r->locale.toString(time, enumFormat);
}
- return QV4::Value::fromString(ctx, formattedTime).asReturnedValue();
+ return ctx->engine->newString(formattedTime)->asReturnedValue();
}
QV4::ReturnedValue QQmlDateExtension::method_toLocaleDateString(QV4::SimpleCallContext *ctx)
@@ -241,7 +241,7 @@ QV4::ReturnedValue QQmlDateExtension::method_toLocaleDateString(QV4::SimpleCallC
if (ctx->callData->argc == 0) {
// Use QLocale for standard toLocaleString() function
QLocale locale;
- return QV4::Value::fromString(ctx, locale.toString(date)).asReturnedValue();
+ return ctx->engine->newString(locale.toString(date))->asReturnedValue();
}
if (!isLocaleObject(ctx->callData->args[0]))
@@ -266,7 +266,7 @@ QV4::ReturnedValue QQmlDateExtension::method_toLocaleDateString(QV4::SimpleCallC
formattedDate = r->locale.toString(date, enumFormat);
}
- return QV4::Value::fromString(ctx, formattedDate).asReturnedValue();
+ return ctx->engine->newString(formattedDate)->asReturnedValue();
}
QV4::ReturnedValue QQmlDateExtension::method_fromLocaleString(QV4::SimpleCallContext *ctx)
@@ -420,7 +420,7 @@ QV4::ReturnedValue QQmlNumberExtension::method_toLocaleString(QV4::SimpleCallCon
if (ctx->callData->argc == 0) {
// Use QLocale for standard toLocaleString() function
QLocale locale;
- return QV4::Value::fromString(ctx, locale.toString(number)).asReturnedValue();
+ return ctx->engine->newString(locale.toString(number))->asReturnedValue();
}
if (!isLocaleObject(ctx->callData->args[0]))
@@ -445,7 +445,7 @@ QV4::ReturnedValue QQmlNumberExtension::method_toLocaleString(QV4::SimpleCallCon
prec = ctx->callData->args[2].toInt32();
}
- return QV4::Value::fromString(ctx, r->locale.toString(number, (char)format, prec)).asReturnedValue();
+ return ctx->engine->newString(r->locale.toString(number, (char)format, prec))->asReturnedValue();
}
QV4::ReturnedValue QQmlNumberExtension::method_toLocaleCurrencyString(QV4::SimpleCallContext *ctx)
@@ -458,7 +458,7 @@ QV4::ReturnedValue QQmlNumberExtension::method_toLocaleCurrencyString(QV4::Simpl
if (ctx->callData->argc == 0) {
// Use QLocale for standard toLocaleString() function
QLocale locale;
- return QV4::Value::fromString(ctx, locale.toString(number)).asReturnedValue();
+ return ctx->engine->newString(locale.toString(number))->asReturnedValue();
}
if (!isLocaleObject(ctx->callData->args[0]))
@@ -475,7 +475,7 @@ QV4::ReturnedValue QQmlNumberExtension::method_toLocaleCurrencyString(QV4::Simpl
symbol = ctx->callData->args[1].toQStringNoThrow();
}
- return QV4::Value::fromString(ctx, r->locale.toCurrencyString(number, symbol)).asReturnedValue();
+ return ctx->engine->newString(r->locale.toCurrencyString(number, symbol))->asReturnedValue();
}
QV4::ReturnedValue QQmlNumberExtension::method_fromLocaleString(QV4::SimpleCallContext *ctx)
@@ -563,7 +563,7 @@ QV4::ReturnedValue QQmlLocaleData::method_get_uiLanguages(QV4::SimpleCallContext
QV4::Scoped<QV4::ArrayObject> result(scope, ctx->engine->newArrayObject());
result->arrayReserve(langs.size());
for (int i = 0; i < langs.size(); ++i) {
- result->arrayData[i].value = QV4::Value::fromString(ctx, langs.at(i));
+ result->arrayData[i].value = ctx->engine->newString(langs.at(i));
result->arrayDataLen = i + 1;
}
@@ -584,7 +584,7 @@ QV4::ReturnedValue QQmlLocaleData::method_currencySymbol(QV4::SimpleCallContext
format = QLocale::CurrencySymbolFormat(intFormat);
}
- return QV4::Value::fromString(ctx, locale.currencySymbol(format)).asReturnedValue();
+ return ctx->engine->newString(locale.currencySymbol(format))->asReturnedValue();
}
#define LOCALE_FORMAT(FUNC) \
@@ -597,7 +597,7 @@ QV4::ReturnedValue QQmlLocaleData::method_ ##FUNC (QV4::SimpleCallContext *ctx)
quint32 intFormat = ctx->callData->args[0].toUInt32(); \
format = QLocale::FormatType(intFormat); \
} \
- return QV4::Value::fromString(ctx, locale. FUNC (format)).asReturnedValue(); \
+ return ctx->engine->newString(locale. FUNC (format))->asReturnedValue(); \
}
LOCALE_FORMAT(dateTimeFormat)
@@ -626,7 +626,7 @@ QV4::ReturnedValue QQmlLocaleData::method_ ## VARIABLE (QV4::SimpleCallContext *
} else { \
name = locale. VARIABLE(idx, enumFormat); \
} \
- return QV4::Value::fromString(ctx, name).asReturnedValue(); \
+ return ctx->engine->newString(name)->asReturnedValue(); \
}
// 0 -> 7 as Qt::Sunday is 7, but Sunday is 0 in JS Date
@@ -652,7 +652,7 @@ QV4::ReturnedValue QQmlLocaleData::method_ ## VARIABLE (QV4::SimpleCallContext *
} else { \
name = locale. VARIABLE(idx, enumFormat); \
} \
- return QV4::Value::fromString(ctx, name).asReturnedValue(); \
+ return ctx->engine->newString(name)->asReturnedValue(); \
}
LOCALE_FORMATTED_MONTHNAME(monthName)
@@ -663,7 +663,7 @@ LOCALE_FORMATTED_DAYNAME(standaloneDayName)
#define LOCALE_STRING_PROPERTY(VARIABLE) QV4::ReturnedValue QQmlLocaleData::method_get_ ## VARIABLE (QV4::SimpleCallContext* ctx) \
{ \
QLocale locale = getThisLocale(ctx); \
- return QV4::Value::fromString(ctx, locale. VARIABLE()).asReturnedValue();\
+ return ctx->engine->newString(locale. VARIABLE())->asReturnedValue();\
}
LOCALE_STRING_PROPERTY(name)
diff --git a/src/qml/qml/qqmlobjectcreator.cpp b/src/qml/qml/qqmlobjectcreator.cpp
index 3b4e89861d..65edcad2cf 100644
--- a/src/qml/qml/qqmlobjectcreator.cpp
+++ b/src/qml/qml/qqmlobjectcreator.cpp
@@ -548,6 +548,8 @@ void QmlObjectCreator::setPropertyValue(QQmlPropertyData *property, const QV4::C
int propertyWriteStatus = -1;
void *argv[] = { 0, 0, &propertyWriteStatus, &propertyWriteFlags };
+ QV4::ExecutionEngine *v4 = QV8Engine::getV4(engine);
+ QV4::Scope scope(v4);
// ### enums
switch (property->propType) {
@@ -583,7 +585,8 @@ void QmlObjectCreator::setPropertyValue(QQmlPropertyData *property, const QV4::C
} else {
QString stringValue = binding->valueAsString(&qmlUnit->header);
if (property->isVarProperty()) {
- _vmeMetaObject->setVMEProperty(property->coreIndex, QV4::Value::fromString(QV8Engine::getV4(engine), stringValue));
+ QV4::ScopedString s(scope, v4->newString(stringValue));
+ _vmeMetaObject->setVMEProperty(property->coreIndex, s.asValue());
} else {
QVariant value = QQmlStringConverters::variantFromString(stringValue);
argv[0] = &value;
diff --git a/src/qml/qml/v8/qqmlbuiltinfunctions.cpp b/src/qml/qml/v8/qqmlbuiltinfunctions.cpp
index 121b0fbb78..638ff942ab 100644
--- a/src/qml/qml/v8/qqmlbuiltinfunctions.cpp
+++ b/src/qml/qml/v8/qqmlbuiltinfunctions.cpp
@@ -834,12 +834,12 @@ ReturnedValue QtObject::method_resolvedUrl(QV4::SimpleCallContext *ctx)
if (p) {
QQmlContextData *ctxt = v8engine->callingContext();
if (ctxt)
- return Value::fromString(ctx, ctxt->resolvedUrl(url).toString()).asReturnedValue();
+ return ctx->engine->newString(ctxt->resolvedUrl(url).toString())->asReturnedValue();
else
- return Value::fromString(ctx, url.toString()).asReturnedValue();
+ return ctx->engine->newString(url.toString())->asReturnedValue();
}
- return Value::fromString(ctx, e->baseUrl().resolved(url).toString()).asReturnedValue();
+ return ctx->engine->newString(e->baseUrl().resolved(url).toString())->asReturnedValue();
}
/*!
@@ -866,7 +866,7 @@ ReturnedValue QtObject::method_md5(SimpleCallContext *ctx)
QByteArray data = ctx->callData->args[0].toQStringNoThrow().toUtf8();
QByteArray result = QCryptographicHash::hash(data, QCryptographicHash::Md5);
- return Value::fromString(ctx, QLatin1String(result.toHex())).asReturnedValue();
+ return ctx->engine->newString(QLatin1String(result.toHex()))->asReturnedValue();
}
/*!
@@ -880,7 +880,7 @@ ReturnedValue QtObject::method_btoa(SimpleCallContext *ctx)
QByteArray data = ctx->callData->args[0].toQStringNoThrow().toUtf8();
- return Value::fromString(ctx, QLatin1String(data.toBase64())).asReturnedValue();
+ return ctx->engine->newString(QLatin1String(data.toBase64()))->asReturnedValue();
}
/*!
@@ -894,7 +894,7 @@ ReturnedValue QtObject::method_atob(SimpleCallContext *ctx)
QByteArray data = ctx->callData->args[0].toQStringNoThrow().toLatin1();
- return Value::fromString(ctx, QString::fromUtf8(QByteArray::fromBase64(data))).asReturnedValue();
+ return ctx->engine->newString(QString::fromUtf8(QByteArray::fromBase64(data)))->asReturnedValue();
}
/*!
@@ -1644,7 +1644,7 @@ ReturnedValue GlobalExtensions::method_qsTranslate(SimpleCallContext *ctx)
comment.toUtf8().constData(),
n);
- return Value::fromString(ctx, result).asReturnedValue();
+ return ctx->engine->newString(result)->asReturnedValue();
}
/*!
@@ -1722,7 +1722,7 @@ ReturnedValue GlobalExtensions::method_qsTr(SimpleCallContext *ctx)
QString result = QCoreApplication::translate(context.toUtf8().constData(), text.toUtf8().constData(),
comment.toUtf8().constData(), n);
- return Value::fromString(ctx, result).asReturnedValue();
+ return ctx->engine->newString(result)->asReturnedValue();
}
/*!
@@ -1797,7 +1797,7 @@ ReturnedValue GlobalExtensions::method_qsTrId(SimpleCallContext *ctx)
if (ctx->callData->argc > 1)
n = ctx->callData->args[1].toInt32();
- return Value::fromString(ctx, qtTrId(ctx->callData->args[0].toQStringNoThrow().toUtf8().constData(), n)).asReturnedValue();
+ return ctx->engine->newString(qtTrId(ctx->callData->args[0].toQStringNoThrow().toUtf8().constData(), n))->asReturnedValue();
}
/*!
@@ -1842,13 +1842,13 @@ ReturnedValue GlobalExtensions::method_string_arg(SimpleCallContext *ctx)
QV4::Value arg = ctx->callData->args[0];
if (arg.isInteger())
- return Value::fromString(ctx, value.arg(arg.integerValue())).asReturnedValue();
+ return ctx->engine->newString(value.arg(arg.integerValue()))->asReturnedValue();
else if (arg.isDouble())
- return Value::fromString(ctx, value.arg(arg.doubleValue())).asReturnedValue();
+ return ctx->engine->newString(value.arg(arg.doubleValue()))->asReturnedValue();
else if (arg.isBoolean())
- return Value::fromString(ctx, value.arg(arg.booleanValue())).asReturnedValue();
+ return ctx->engine->newString(value.arg(arg.booleanValue()))->asReturnedValue();
- return Value::fromString(ctx, value.arg(arg.toQStringNoThrow())).asReturnedValue();
+ return ctx->engine->newString(value.arg(arg.toQStringNoThrow()))->asReturnedValue();
}
diff --git a/src/qml/qml/v8/qv4domerrors_p.h b/src/qml/qml/v8/qv4domerrors_p.h
index 686678c093..44662e8cba 100644
--- a/src/qml/qml/v8/qv4domerrors_p.h
+++ b/src/qml/qml/v8/qv4domerrors_p.h
@@ -77,7 +77,7 @@ QT_BEGIN_NAMESPACE
#define DOMEXCEPTION_TYPE_MISMATCH_ERR 17
#define V4THROW_DOM(error, string) { \
- QV4::ScopedValue v(scope, QV4::Value::fromString(ctx, QStringLiteral(string))); \
+ QV4::ScopedValue v(scope, ctx->engine->newString(QStringLiteral(string))); \
QV4::Scoped<Object> ex(scope, ctx->engine->newErrorObject(v)); \
ex->put(QV4::ScopedString(scope, ctx->engine->newIdentifier(QStringLiteral("code"))), QV4::ScopedValue(scope, QV4::Primitive::fromInt32(error))); \
ctx->throwError(ex); \
diff --git a/src/qml/qml/v8/qv8engine.cpp b/src/qml/qml/v8/qv8engine.cpp
index 97cfb50212..20d81c2ac0 100644
--- a/src/qml/qml/v8/qv8engine.cpp
+++ b/src/qml/qml/v8/qv8engine.cpp
@@ -249,7 +249,7 @@ QV4::ReturnedValue QV8Engine::fromVariant(const QVariant &variant)
case QMetaType::Double:
return QV4::Encode(*reinterpret_cast<const double*>(ptr));
case QMetaType::QString:
- return QV4::Value::fromString(m_v4Engine->current, *reinterpret_cast<const QString*>(ptr)).asReturnedValue();
+ return m_v4Engine->current->engine->newString(*reinterpret_cast<const QString*>(ptr))->asReturnedValue();
case QMetaType::Float:
return QV4::Encode(*reinterpret_cast<const float*>(ptr));
case QMetaType::Short:
@@ -661,7 +661,7 @@ QV4::ReturnedValue QV8Engine::metaTypeToJS(int type, const void *data)
case QMetaType::Double:
return QV4::Encode(*reinterpret_cast<const double*>(data));
case QMetaType::QString:
- return QV4::Value::fromString(m_v4Engine->current, *reinterpret_cast<const QString*>(data)).asReturnedValue();
+ return m_v4Engine->current->engine->newString(*reinterpret_cast<const QString*>(data))->asReturnedValue();
case QMetaType::Float:
return QV4::Encode(*reinterpret_cast<const float*>(data));
case QMetaType::Short: