aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4internalclass.cpp
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2018-04-06 23:25:51 +0200
committerLars Knoll <lars.knoll@qt.io>2018-05-02 14:18:23 +0000
commit3c090c80c58d99f1bd29493ef747a4f6fa915a71 (patch)
tree6c9f9c4dd23e57901b0dc30d66a467a1b7893688 /src/qml/jsruntime/qv4internalclass.cpp
parent0660714ace53ddecfb0f9d5e238799fea5bbdb67 (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.cpp34
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)