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(); prop.value = expr->expression();
QObject *scope = expr->scopeObject(); QObject *scope = expr->scopeObject();
if (scope) { if (scope) {
QString methodName = QString::fromLatin1(QMetaObjectPrivate::signal(scope->metaObject(), signalHandler->signalIndex()).name()); const QByteArray methodName = QMetaObjectPrivate::signal(scope->metaObject(),
if (!methodName.isEmpty()) { signalHandler->signalIndex()).name();
prop.name = QLatin1String("on") + methodName[0].toUpper() const QLatin1String methodNameStr(methodName);
+ methodName.mid(1); 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); int returnType = object.methodReturnType(data, &unknownTypeError);
if (returnType == QMetaType::UnknownType) { if (returnType == QMetaType::UnknownType) {
QString typeName = QString::fromLatin1(unknownTypeError); return engine->throwError(QLatin1String("Unknown method return type: ")
QString error = QStringLiteral("Unknown method return type: %1").arg(typeName); + QLatin1String(unknownTypeError));
return engine->throwError(error);
} }
if (data.hasArguments()) { if (data.hasArguments()) {
@ -1319,9 +1318,8 @@ static QV4::ReturnedValue CallPrecise(const QQmlObjectOrGadget &object, const QQ
args = object.methodParameterTypes(data.coreIndex(), &storage, &unknownTypeError); args = object.methodParameterTypes(data.coreIndex(), &storage, &unknownTypeError);
if (!args) { if (!args) {
QString typeName = QString::fromLatin1(unknownTypeError); return engine->throwError(QLatin1String("Unknown method parameter type: ")
QString error = QStringLiteral("Unknown method parameter type: %1").arg(typeName); + QLatin1String(unknownTypeError));
return engine->throwError(error);
} }
if (args[0] > callArgs->argc) { if (args[0] > callArgs->argc) {

View File

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

View File

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