optimize string usage: use fromLatin1() less

.. to reduce allocations.

Replace fromLatin1 with QLatin1String or
with QStringBuilder where it is possible.

Change-Id: I09c7242fa7b118447b51239e2a6743a34fb3de14
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
This commit is contained in:
Anton Kudryavtsev 2016-08-23 13:15:51 +03:00
parent 65c7ddd9dd
commit 798b6ba239
4 changed files with 16 additions and 13 deletions

View File

@ -289,10 +289,12 @@ void QQmlEngineDebugServiceImpl::buildObjectDump(QDataStream &message,
prop.value = expr->expression();
QObject *scope = expr->scopeObject();
if (scope) {
QString methodName = QString::fromLatin1(QMetaObjectPrivate::signal(scope->metaObject(), signalHandler->signalIndex()).name());
if (!methodName.isEmpty()) {
prop.name = QLatin1String("on") + methodName[0].toUpper()
+ methodName.mid(1);
const QByteArray methodName = QMetaObjectPrivate::signal(scope->metaObject(),
signalHandler->signalIndex()).name();
const QLatin1String methodNameStr(methodName);
if (methodNameStr.size() != 0) {
prop.name = QLatin1String("on") + QChar(methodNameStr.at(0)).toUpper()
+ methodNameStr.mid(1);
}
}
}

View File

@ -1302,9 +1302,8 @@ static QV4::ReturnedValue CallPrecise(const QQmlObjectOrGadget &object, const QQ
int returnType = object.methodReturnType(data, &unknownTypeError);
if (returnType == QMetaType::UnknownType) {
QString typeName = QString::fromLatin1(unknownTypeError);
QString error = QStringLiteral("Unknown method return type: %1").arg(typeName);
return engine->throwError(error);
return engine->throwError(QLatin1String("Unknown method return type: ")
+ QLatin1String(unknownTypeError));
}
if (data.hasArguments()) {
@ -1319,9 +1318,8 @@ static QV4::ReturnedValue CallPrecise(const QQmlObjectOrGadget &object, const QQ
args = object.methodParameterTypes(data.coreIndex(), &storage, &unknownTypeError);
if (!args) {
QString typeName = QString::fromLatin1(unknownTypeError);
QString error = QStringLiteral("Unknown method parameter type: %1").arg(typeName);
return engine->throwError(error);
return engine->throwError(QLatin1String("Unknown method parameter type: ")
+ QLatin1String(unknownTypeError));
}
if (args[0] > callArgs->argc) {

View File

@ -138,8 +138,11 @@ QV4::ReturnedValue VariantPrototype::method_toString(CallContext *ctx)
if (!o)
return Encode::undefined();
QString result = o->d()->data.toString();
if (result.isEmpty() && !o->d()->data.canConvert(QVariant::String))
result = QStringLiteral("QVariant(%0)").arg(QString::fromLatin1(o->d()->data.typeName()));
if (result.isEmpty() && !o->d()->data.canConvert(QVariant::String)) {
result = QLatin1String("QVariant(")
+ QLatin1String(o->d()->data.typeName())
+ QLatin1Char(')');
}
return Encode(ctx->d()->engine->newString(result));
}

View File

@ -519,7 +519,7 @@ void QuickTestResult::stringify(QQmlV4Function *args)
if (result.isEmpty()) {
QString tmp = value->toQStringNoThrow();
if (value->as<QV4::ArrayObject>())
result.append(QString::fromLatin1("[%1]").arg(tmp));
result += QLatin1Char('[') + tmp + QLatin1Char(']');
else
result.append(tmp);
}