aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4internalclass.cpp
diff options
context:
space:
mode:
authorUlf Hermann <[email protected]>2024-11-14 11:23:20 +0100
committerUlf Hermann <[email protected]>2024-11-16 11:01:46 +0100
commitd8a2873109d0758ebfc0f511e0c1d90841500437 (patch)
tree631a473566b42d34988f76c63b9a87486ca69ff3 /src/qml/jsruntime/qv4internalclass.cpp
parentebaf1a1a8a8ffead188fe59e159c123d1a1ff763 (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.cpp15
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)