aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2018-04-03 15:51:43 +0200
committerLars Knoll <lars.knoll@qt.io>2018-05-02 14:17:17 +0000
commit13cc936859518b5fa378c7b8242d56ebf49ebce9 (patch)
tree22d3bd9c771417707c35b8891f69b72b718fb84d /src/qml/jsruntime
parente9492e7b7b44c1f8cd5489d93463fc2b1f8b6d72 (diff)
Remove the QString member from Identifier
First step to turning identifier into a simple int. Change-Id: I4988587aa61f1f02ed80426ccbf00b685f38c829 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/qml/jsruntime')
-rw-r--r--src/qml/jsruntime/qv4identifier.cpp26
-rw-r--r--src/qml/jsruntime/qv4identifier_p.h15
-rw-r--r--src/qml/jsruntime/qv4identifiertable.cpp3
-rw-r--r--src/qml/jsruntime/qv4identifiertable_p.h2
4 files changed, 17 insertions, 29 deletions
diff --git a/src/qml/jsruntime/qv4identifier.cpp b/src/qml/jsruntime/qv4identifier.cpp
index c122bcb51a..77510d95f6 100644
--- a/src/qml/jsruntime/qv4identifier.cpp
+++ b/src/qml/jsruntime/qv4identifier.cpp
@@ -38,6 +38,7 @@
****************************************************************************/
#include "qv4identifier_p.h"
#include "qv4identifiertable_p.h"
+#include "qv4string_p.h"
QT_BEGIN_NAMESPACE
@@ -150,18 +151,9 @@ const IdentifierHashEntry *IdentifierHash::lookup(const QString &str) const
{
if (!d)
return nullptr;
- Q_ASSERT(d->entries);
- uint hash = String::createHashValue(str.constData(), str.length(), nullptr);
- uint idx = hash % d->alloc;
- while (1) {
- if (!d->entries[idx].identifier)
- return nullptr;
- if (d->entries[idx].identifier->string == str)
- return d->entries + idx;
- ++idx;
- idx %= d->alloc;
- }
+ Identifier *id = d->identifierTable->identifier(str);
+ return lookup(id);
}
const IdentifierHashEntry *IdentifierHash::lookup(String *str) const
@@ -185,6 +177,18 @@ const Identifier *IdentifierHash::toIdentifier(Heap::String *str) const
return d->identifierTable->identifier(str);
}
+QString QV4::IdentifierHash::findId(int value) const
+{
+ IdentifierHashEntry *e = d->entries;
+ IdentifierHashEntry *end = e + d->alloc;
+ while (e < end) {
+ if (e->identifier && e->value == value)
+ return d->identifierTable->stringFromIdentifier(e->identifier)->toQString();
+ ++e;
+ }
+ return QString();
+}
+
}
diff --git a/src/qml/jsruntime/qv4identifier_p.h b/src/qml/jsruntime/qv4identifier_p.h
index 82346d5f68..c0c035479e 100644
--- a/src/qml/jsruntime/qv4identifier_p.h
+++ b/src/qml/jsruntime/qv4identifier_p.h
@@ -66,7 +66,6 @@ struct ExecutionEngine;
struct Identifier
{
- QString string;
uint hashValue;
};
@@ -180,20 +179,6 @@ inline int IdentifierHash::value(String *str) const
return e ? e->value : -1;
}
-
-inline
-QString IdentifierHash::findId(int value) const
-{
- IdentifierHashEntry *e = d->entries;
- IdentifierHashEntry *end = e + d->alloc;
- while (e < end) {
- if (e->identifier && e->value == value)
- return e->identifier->string;
- ++e;
- }
- return QString();
-}
-
}
QT_END_NAMESPACE
diff --git a/src/qml/jsruntime/qv4identifiertable.cpp b/src/qml/jsruntime/qv4identifiertable.cpp
index b77f9478d3..9a86e4259f 100644
--- a/src/qml/jsruntime/qv4identifiertable.cpp
+++ b/src/qml/jsruntime/qv4identifiertable.cpp
@@ -79,7 +79,6 @@ void IdentifierTable::addEntry(Heap::String *str)
return;
str->identifier = new Identifier;
- str->identifier->string = str->toQString();
str->identifier->hashValue = hash;
bool grow = (alloc <= size*2);
@@ -158,7 +157,7 @@ Identifier *IdentifierTable::identifierImpl(const Heap::String *str)
return str->identifier;
}
-Heap::String *IdentifierTable::stringFromIdentifier(Identifier *i)
+Heap::String *IdentifierTable::stringFromIdentifier(const Identifier *i) const
{
if (!i)
return nullptr;
diff --git a/src/qml/jsruntime/qv4identifiertable_p.h b/src/qml/jsruntime/qv4identifiertable_p.h
index b0b08f1e54..2210a866fb 100644
--- a/src/qml/jsruntime/qv4identifiertable_p.h
+++ b/src/qml/jsruntime/qv4identifiertable_p.h
@@ -91,7 +91,7 @@ public:
Identifier *identifierImpl(const Heap::String *str);
- Heap::String *stringFromIdentifier(Identifier *i);
+ Q_QML_PRIVATE_EXPORT Heap::String *stringFromIdentifier(const Identifier *i) const;
void mark(MarkStack *markStack) {
for (int i = 0; i < alloc; ++i) {