aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2018-09-12 19:43:14 +0200
committerErik Verbruggen <erik.verbruggen@qt.io>2018-09-14 10:07:31 +0000
commit53afbba6dc95e69a13b99e8035fd35582ef952e4 (patch)
treecc8596b4cf9d17c2694a436943b55778f82e6545 /src/qml
parent69359ed4e500081d39bdc0436afa1f7e5f8fdd9d (diff)
Inline StringOrSymbol::toPropertyKey()
Save some instructions when converting a Stirng to a property key. Change-Id: Ide05ba8a54b504f5e606bdcdab53a2a0afeb9436 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
Diffstat (limited to 'src/qml')
-rw-r--r--src/qml/jsruntime/qv4string.cpp7
-rw-r--r--src/qml/jsruntime/qv4string_p.h9
2 files changed, 7 insertions, 9 deletions
diff --git a/src/qml/jsruntime/qv4string.cpp b/src/qml/jsruntime/qv4string.cpp
index 911103c05d..68d65f2e24 100644
--- a/src/qml/jsruntime/qv4string.cpp
+++ b/src/qml/jsruntime/qv4string.cpp
@@ -250,13 +250,6 @@ void Heap::StringOrSymbol::createHashValue() const
stringHash = QV4::String::calculateHashValue(ch, end, &subtype);
}
-PropertyKey StringOrSymbol::toPropertyKey() const {
- if (d()->identifier.isValid())
- return d()->identifier;
- createPropertyKey();
- return propertyKey();
-}
-
qint64 String::virtualGetLength(const Managed *m)
{
return static_cast<const String *>(m)->d()->length();
diff --git a/src/qml/jsruntime/qv4string_p.h b/src/qml/jsruntime/qv4string_p.h
index 6a69c830ea..fbd4f5f550 100644
--- a/src/qml/jsruntime/qv4string_p.h
+++ b/src/qml/jsruntime/qv4string_p.h
@@ -306,12 +306,17 @@ struct ComplexString : String {
inline
void StringOrSymbol::createPropertyKey() const {
- if (d()->identifier.isValid())
- return;
+ Q_ASSERT(!d()->identifier.isValid());
Q_ASSERT(isString());
static_cast<const String *>(this)->createPropertyKeyImpl();
}
+inline PropertyKey StringOrSymbol::toPropertyKey() const {
+ if (!d()->identifier.isValid())
+ createPropertyKey();
+ return d()->identifier;
+}
+
template<>
inline const StringOrSymbol *Value::as() const {
return isManaged() && m()->internalClass->vtable->isStringOrSymbol ? static_cast<const String *>(this) : nullptr;