diff options
author | Ulf Hermann <[email protected]> | 2024-11-14 11:23:20 +0100 |
---|---|---|
committer | Ulf Hermann <[email protected]> | 2024-11-16 11:01:46 +0100 |
commit | d8a2873109d0758ebfc0f511e0c1d90841500437 (patch) | |
tree | 631a473566b42d34988f76c63b9a87486ca69ff3 /src/qml/jsruntime/qv4internalclass.cpp | |
parent | ebaf1a1a8a8ffead188fe59e159c123d1a1ff763 (diff) |
QtQml: Deduplicate InternalClass::addMember()
Theoretically the inner changeMember() can also produce a new
InternalClass. In that case we do have to set it.
Change-Id: I2b77e2bab9aa839e156e3293706e8d5e54518a93
Reviewed-by: Olivier De Cannière <[email protected]>
Diffstat (limited to 'src/qml/jsruntime/qv4internalclass.cpp')
-rw-r--r-- | src/qml/jsruntime/qv4internalclass.cpp | 15 |
1 files changed, 4 insertions, 11 deletions
diff --git a/src/qml/jsruntime/qv4internalclass.cpp b/src/qml/jsruntime/qv4internalclass.cpp index ff29b5c4dd..5b21d5ac07 100644 --- a/src/qml/jsruntime/qv4internalclass.cpp +++ b/src/qml/jsruntime/qv4internalclass.cpp @@ -565,17 +565,10 @@ InternalClass *InternalClass::locked() void InternalClass::addMember(QV4::Object *object, PropertyKey id, PropertyAttributes data, InternalClassEntry *entry) { - Q_ASSERT(id.isStringOrSymbol()); - if (!data.isEmpty()) - data.resolve(); - PropertyHash::Entry *e = object->internalClass()->findEntry(id); - if (e) { - changeMember(object, id, data, entry); - return; - } - - Heap::InternalClass *newClass = object->internalClass()->addMemberImpl(id, data, entry); - object->setInternalClass(newClass); + Heap::InternalClass *oldClass = object->internalClass(); + Heap::InternalClass *newClass = oldClass->addMember(id, data, entry); + if (newClass != oldClass) + object->setInternalClass(newClass); } Heap::InternalClass *InternalClass::addMember(PropertyKey identifier, PropertyAttributes data, InternalClassEntry *entry) |