Don't use a PersistentValue in QHashedV4String
authorLars Knoll <lars.knoll@digia.com>
Tue, 25 Jun 2013 13:19:27 +0000 (15:19 +0200)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Fri, 28 Jun 2013 12:55:46 +0000 (14:55 +0200)
The class is only used on the stack and critical to
performance in a couple of places. This speeds up
some QML benchmarks quite a bit.

Change-Id: Id36682487396d42ddacdc71f7a32792a09318cf9
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
src/qml/qml/ftw/qhashedstring_p.h

index 8d16892..8af9e3f 100644 (file)
@@ -117,7 +117,7 @@ public:
     inline QString toString() const;
 
 private:
-    QV4::PersistentValue m_string;
+    QV4::Value m_string;
 };
 
 class QHashedCStringRef;
@@ -1151,32 +1151,32 @@ QHashedV4String &QHashedV4String::operator=(const QHashedV4String &other)
 
 bool QHashedV4String::operator==(const QHashedV4String &string)
 {
-    return m_string.value().asString()->isEqualTo(string.m_string.value().asString());
+    return m_string.asString()->isEqualTo(string.m_string.asString());
 }
 
 quint32 QHashedV4String::hash() const
 {
-    return m_string.value().asString()->hashValue();
+    return m_string.asString()->hashValue();
 }
 
 int QHashedV4String::length() const
 {
-    return m_string.value().asString()->toQString().length();
+    return m_string.asString()->toQString().length();
 }
 
 quint32 QHashedV4String::symbolId() const
 {
-    return m_string.value().asString()->identifier;
+    return m_string.asString()->identifier;
 }
 
 QV4::Value QHashedV4String::string() const
 {
-    return m_string.value();
+    return m_string;
 }
 
 QString QHashedV4String::toString() const
 {
-    return m_string.value().toQString();
+    return m_string.toQString();
 }
 
 QHashedStringRef::QHashedStringRef()