const IdentifierHashEntry &e = d->entries[i];
if (!e.identifier)
continue;
- uint idx = Identifier::hash(e.identifier) % newAlloc;
+ uint idx = e.identifier->hashValue % newAlloc;
while (newEntries[idx].identifier) {
++idx;
idx %= newAlloc;
d->alloc = newAlloc;
}
- uint idx = Identifier::hash(identifier) % d->alloc;
+ uint idx = identifier->hashValue % d->alloc;
while (d->entries[idx].identifier) {
Q_ASSERT(d->entries[idx].identifier != identifier);
++idx;
return 0;
assert(d->entries);
- uint idx = Identifier::hash(identifier) % d->alloc;
+ uint idx = identifier->hashValue % d->alloc;
while (1) {
- if (d->entries[idx].identifier == identifier)
- return d->entries + idx;
if (!d->entries[idx].identifier)
return 0;
+ if (d->entries[idx].identifier == identifier)
+ return d->entries + idx;
++idx;
idx %= d->alloc;
}
{
if (!d)
return 0;
- return lookup(d->identifierTable->identifier(str));
+ assert(d->entries);
+
+ uint hash = String::createHashValue(str.constData(), str.length());
+ uint idx = hash % d->alloc;
+ while (1) {
+ if (!d->entries[idx].identifier)
+ return 0;
+ if (d->entries[idx].identifier->string == str)
+ return d->entries + idx;
+ ++idx;
+ idx %= d->alloc;
+ }
}
const IdentifierHashEntry *IdentifierHashBase::lookup(String *str) const
{
if (!d)
return 0;
- return lookup(d->identifierTable->identifier(str));
+ if (str->identifier)
+ return lookup(str->identifier);
+ return lookup(str->toQString());
}
const Identifier *IdentifierHashBase::toIdentifier(const QString &str) const
uint QV4::qHash(const QV4::InternalClassTransition &t, uint)
{
- return Identifier::hash(t.id) ^ t.flags;
+ return t.id->hashValue ^ t.flags;
}
using namespace QV4;
const Entry &e = d->entries[i];
if (!e.identifier || e.index >= classSize)
continue;
- uint idx = Identifier::hash(e.identifier) % dd->alloc;
+ uint idx = e.identifier->hashValue % dd->alloc;
while (dd->entries[idx].identifier) {
++idx;
idx %= dd->alloc;
d = dd;
}
- uint idx = Identifier::hash(entry.identifier) % d->alloc;
+ uint idx = entry.identifier->hashValue % d->alloc;
while (d->entries[idx].identifier) {
++idx;
idx %= d->alloc;
{
assert(d->entries);
- uint idx = Identifier::hash(identifier) % d->alloc;
+ uint idx = identifier->hashValue % d->alloc;
while (1) {
if (d->entries[idx].identifier == identifier)
return d->entries[idx].index;