diff options
Diffstat (limited to 'src/qml/jsruntime/qv4identifiertable_p.h')
-rw-r--r-- | src/qml/jsruntime/qv4identifiertable_p.h | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/src/qml/jsruntime/qv4identifiertable_p.h b/src/qml/jsruntime/qv4identifiertable_p.h index dce270e337..84e1ef2f4f 100644 --- a/src/qml/jsruntime/qv4identifiertable_p.h +++ b/src/qml/jsruntime/qv4identifiertable_p.h @@ -53,6 +53,7 @@ #include "qv4identifier_p.h" #include "qv4string_p.h" #include "qv4engine_p.h" +#include <qset.h> #include <limits.h> QT_BEGIN_NAMESPACE @@ -69,6 +70,8 @@ struct IdentifierTable Heap::String **entriesByHash; Heap::String **entriesById; + QSet<IdentifierHashData *> idHashes; + void addEntry(Heap::String *str); public: @@ -94,15 +97,14 @@ public: Q_QML_PRIVATE_EXPORT Heap::String *stringForId(Identifier i) const; - void mark(MarkStack *markStack) { - for (int i = 0; i < alloc; ++i) { - Heap::String *entry = entriesByHash[i]; - if (!entry || entry->isMarked()) - continue; - entry->setMarkBit(); - Q_ASSERT(entry->vtable()->markObjects); - entry->vtable()->markObjects(entry, markStack); - } + void markObjects(MarkStack *markStack); + void sweep(); + + void addIdentifierHash(IdentifierHashData *h) { + idHashes.insert(h); + } + void removeIdentifierHash(IdentifierHashData *h) { + idHashes.remove(h); } }; |