diff options
author | Lars Knoll <lars.knoll@qt.io> | 2018-09-22 22:52:18 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2018-09-27 08:33:48 +0000 |
commit | 7fb4fc2ac7b56d3f60ceb8ae1175bd4596436cc7 (patch) | |
tree | 72f5de752001bbb8254e4d03879a5a3447767f42 /src/qml/jsruntime/qv4internalclass.cpp | |
parent | e17ab5952503595e5be3be3e492a9fb829e9877b (diff) |
Small refactoring of PropertyHash::lookup()
Change-Id: I0c8cbf0914b8de4613ab203876636746f41d9718
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
Diffstat (limited to 'src/qml/jsruntime/qv4internalclass.cpp')
-rw-r--r-- | src/qml/jsruntime/qv4internalclass.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/qml/jsruntime/qv4internalclass.cpp b/src/qml/jsruntime/qv4internalclass.cpp index b2b1c29e10..602061bb6e 100644 --- a/src/qml/jsruntime/qv4internalclass.cpp +++ b/src/qml/jsruntime/qv4internalclass.cpp @@ -461,7 +461,8 @@ void InternalClass::addMember(QV4::Object *object, PropertyKey id, PropertyAttri { Q_ASSERT(id.isStringOrSymbol()); data.resolve(); - if (object->internalClass()->propertyTable.lookup(id) < object->internalClass()->size) { + PropertyHash::Entry *e = object->internalClass()->propertyTable.lookup(id); + if (e && e->index < object->internalClass()->size) { changeMember(object, id, data, index); return; } @@ -479,7 +480,8 @@ Heap::InternalClass *InternalClass::addMember(PropertyKey identifier, PropertyAt Q_ASSERT(identifier.isStringOrSymbol()); data.resolve(); - if (propertyTable.lookup(identifier) < size) + PropertyHash::Entry *e = propertyTable.lookup(identifier); + if (e && e->index < size) return changeMember(identifier, data, index); return addMemberImpl(identifier, data, index); @@ -530,7 +532,7 @@ void InternalClass::removeChildEntry(InternalClass *child) void InternalClass::removeMember(QV4::Object *object, PropertyKey identifier) { Heap::InternalClass *oldClass = object->internalClass(); - Q_ASSERT(oldClass->propertyTable.lookup(identifier) < oldClass->size); + Q_ASSERT(oldClass->propertyTable.lookup(identifier) && oldClass->propertyTable.lookup(identifier)->index < oldClass->size); Transition temp = { { identifier }, nullptr, Transition::RemoveMember }; Transition &t = object->internalClass()->lookupOrInsertTransition(temp); |