aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4internalclass.cpp
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2018-09-22 22:52:18 +0200
committerLars Knoll <lars.knoll@qt.io>2018-09-27 08:33:48 +0000
commit7fb4fc2ac7b56d3f60ceb8ae1175bd4596436cc7 (patch)
tree72f5de752001bbb8254e4d03879a5a3447767f42 /src/qml/jsruntime/qv4internalclass.cpp
parente17ab5952503595e5be3be3e492a9fb829e9877b (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.cpp8
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);