diff options
author | Lars Knoll <lars.knoll@qt.io> | 2018-04-06 23:25:51 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2018-05-02 14:18:23 +0000 |
commit | 3c090c80c58d99f1bd29493ef747a4f6fa915a71 (patch) | |
tree | 6c9f9c4dd23e57901b0dc30d66a467a1b7893688 /src/qml/jsruntime/qv4internalclass.cpp | |
parent | 0660714ace53ddecfb0f9d5e238799fea5bbdb67 (diff) |
Remove String dependency from InternalClass
This is required, so we can also use Symbols in
the internal classes.
Change-Id: I630e7aa7b8b16d5a94041f8d18515fd582f94264
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/qml/jsruntime/qv4internalclass.cpp')
-rw-r--r-- | src/qml/jsruntime/qv4internalclass.cpp | 34 |
1 files changed, 9 insertions, 25 deletions
diff --git a/src/qml/jsruntime/qv4internalclass.cpp b/src/qml/jsruntime/qv4internalclass.cpp index de3f6e0ee6..40b57e76e1 100644 --- a/src/qml/jsruntime/qv4internalclass.cpp +++ b/src/qml/jsruntime/qv4internalclass.cpp @@ -225,11 +225,12 @@ static void removeFromPropertyData(QV4::Object *object, int idx, bool accessor = o->setProperty(v4, size + 1, Primitive::undefinedValue()); } -void InternalClass::changeMember(QV4::Object *object, QV4::String *string, PropertyAttributes data, uint *index) +void InternalClass::changeMember(QV4::Object *object, Identifier id, PropertyAttributes data, uint *index) { + Q_ASSERT(id.isValid()); uint idx; Heap::InternalClass *oldClass = object->internalClass(); - Heap::InternalClass *newClass = oldClass->changeMember(string->identifier(), data, &idx); + Heap::InternalClass *newClass = oldClass->changeMember(id, data, &idx); if (index) *index = idx; @@ -382,31 +383,26 @@ Heap::InternalClass *InternalClass::nonExtensible() return newClass; } -void InternalClass::addMember(QV4::Object *object, QV4::String *string, PropertyAttributes data, uint *index) +void InternalClass::addMember(QV4::Object *object, Identifier id, PropertyAttributes data, uint *index) { + Q_ASSERT(id.isValid()); data.resolve(); - object->internalClass()->engine->identifierTable->identifier(string); - if (object->internalClass()->propertyTable.lookup(string->d()->identifier) < object->internalClass()->size) { - changeMember(object, string, data, index); + if (object->internalClass()->propertyTable.lookup(id) < object->internalClass()->size) { + changeMember(object, id, data, index); return; } uint idx; - Heap::InternalClass *newClass = object->internalClass()->addMemberImpl(string->identifier(), data, &idx); + Heap::InternalClass *newClass = object->internalClass()->addMemberImpl(id, data, &idx); if (index) *index = idx; object->setInternalClass(newClass); } -Heap::InternalClass *InternalClass::addMember(QV4::String *string, PropertyAttributes data, uint *index) -{ - engine->identifierTable->identifier(string); - return addMember(string->identifier(), data, index); -} - Heap::InternalClass *InternalClass::addMember(Identifier identifier, PropertyAttributes data, uint *index) { + Q_ASSERT(identifier.isValid()); data.resolve(); if (propertyTable.lookup(identifier) < size) @@ -479,18 +475,6 @@ void InternalClass::removeMember(QV4::Object *object, Identifier identifier) Q_ASSERT(object->internalClass()->size == oldClass->size); } -uint InternalClass::find(const QV4::String *string) -{ - engine->identifierTable->identifier(string); - const Identifier id = string->d()->identifier; - - uint index = propertyTable.lookup(id); - if (index < size) - return index; - - return UINT_MAX; -} - Heap::InternalClass *InternalClass::sealed() { if (isSealed) |