Remove two reinterpret_casts in Object
authorLars Knoll <lars.knoll@digia.com>
Fri, 14 Nov 2014 08:31:59 +0000 (09:31 +0100)
committerSimon Hausmann <simon.hausmann@digia.com>
Sat, 22 Nov 2014 06:56:58 +0000 (07:56 +0100)
Change-Id: I921cd8129acb47cffd58be9551a6925c4f296d41
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
src/qml/jsruntime/qv4argumentsobject.cpp
src/qml/jsruntime/qv4functionobject.cpp
src/qml/jsruntime/qv4functionobject_p.h
src/qml/jsruntime/qv4internalclass.cpp
src/qml/jsruntime/qv4lookup.cpp
src/qml/jsruntime/qv4object.cpp
src/qml/jsruntime/qv4object_p.h
src/qml/jsruntime/qv4regexpobject.cpp
src/qml/jsruntime/qv4runtime.cpp

index 14f9b0e..78c8d6f 100644 (file)
@@ -65,10 +65,10 @@ Heap::ArgumentsObject::ArgumentsObject(QV4::CallContext *context)
     } else {
         args->setHasAccessorProperty();
         Q_ASSERT(CalleePropertyIndex == args->internalClass()->find(context->d()->engine->id_callee));
-        args->memberData()->data()[CalleePropertyIndex] = context->d()->function->asReturnedValue();
+        args->memberData()->data[CalleePropertyIndex] = context->d()->function->asReturnedValue();
     }
     Q_ASSERT(LengthPropertyIndex == args->internalClass()->find(context->d()->engine->id_length));
-    args->memberData()->data()[LengthPropertyIndex] = Primitive::fromInt32(context->d()->realArgumentCount);
+    args->memberData()->data[LengthPropertyIndex] = Primitive::fromInt32(context->d()->realArgumentCount);
 }
 
 void ArgumentsObject::fullyCreate()
index 7c2ab2c..ea82923 100644 (file)
@@ -150,10 +150,10 @@ void FunctionObject::init(String *n, bool createProto)
     if (createProto) {
         Scoped<Object> proto(s, scope()->engine->newObject(scope()->engine->protoClass));
         proto->ensureMemberIndex(s.engine, Heap::FunctionObject::Index_ProtoConstructor);
-        proto->memberData()->data()[Heap::FunctionObject::Index_ProtoConstructor] = this->asReturnedValue();
-        memberData()->data()[Heap::FunctionObject::Index_Prototype] = proto.asReturnedValue();
+        proto->memberData()->data[Heap::FunctionObject::Index_ProtoConstructor] = this->asReturnedValue();
+        memberData()->data[Heap::FunctionObject::Index_Prototype] = proto.asReturnedValue();
     } else {
-        memberData()->data()[Heap::FunctionObject::Index_Prototype] = Encode::undefined();
+        memberData()->data[Heap::FunctionObject::Index_Prototype] = Encode::undefined();
     }
 
     ScopedValue v(s, n);
index 1621e52..711b16a 100644 (file)
@@ -139,7 +139,7 @@ struct Q_QML_EXPORT FunctionObject: Object {
 
     static Heap::FunctionObject *createScriptFunction(ExecutionContext *scope, Function *function, bool createProto = true);
 
-    ReturnedValue protoProperty() { return memberData()->data()[Heap::FunctionObject::Index_Prototype].asReturnedValue(); }
+    ReturnedValue protoProperty() { return memberData()->data[Heap::FunctionObject::Index_Prototype].asReturnedValue(); }
 
     bool needsActivation() const { return d()->needsActivation; }
     bool strictMode() const { return d()->strictMode; }
index bd76fa6..f24263a 100644 (file)
@@ -153,10 +153,10 @@ void InternalClass::changeMember(Object *object, String *string, PropertyAttribu
 
     if (newClass->size > object->internalClass()->size) {
         Q_ASSERT(newClass->size == object->internalClass()->size + 1);
-        memmove(object->memberData()->data() + idx + 2, object->memberData()->data() + idx + 1, (object->internalClass()->size - idx - 1)*sizeof(Value));
+        memmove(object->memberData()->data + idx + 2, object->memberData()->data + idx + 1, (object->internalClass()->size - idx - 1)*sizeof(Value));
     } else if (newClass->size < object->internalClass()->size) {
         Q_ASSERT(newClass->size == object->internalClass()->size - 1);
-        memmove(object->memberData()->data() + idx + 1, object->memberData()->data() + idx + 2, (object->internalClass()->size - idx - 2)*sizeof(Value));
+        memmove(object->memberData()->data + idx + 1, object->memberData()->data + idx + 2, (object->internalClass()->size - idx - 2)*sizeof(Value));
     }
     object->setInternalClass(newClass);
 }
@@ -351,7 +351,7 @@ void InternalClass::removeMember(Object *object, Identifier *id)
     }
 
     // remove the entry in memberdata
-    memmove(object->memberData()->data() + propIdx, object->memberData()->data() + propIdx + 1, (object->internalClass()->size - propIdx)*sizeof(Value));
+    memmove(object->memberData()->data + propIdx, object->memberData()->data + propIdx + 1, (object->internalClass()->size - propIdx)*sizeof(Value));
 
     oldClass->transitions.insert(t, object->internalClass());
 }
index 97270a3..f153c92 100644 (file)
@@ -51,7 +51,7 @@ ReturnedValue Lookup::lookup(ValueRef thisObject, Object *obj, PropertyAttribute
         if (index != UINT_MAX) {
             level = i;
             *attrs = obj->internalClass()->propertyData.at(index);
-            return !attrs->isAccessor() ? obj->memberData()->data()[index].asReturnedValue() : obj->getValue(thisObject, obj->propertyAt(index), *attrs);
+            return !attrs->isAccessor() ? obj->memberData()->data[index].asReturnedValue() : obj->getValue(thisObject, obj->propertyAt(index), *attrs);
         }
 
         obj = obj->prototype();
@@ -63,7 +63,7 @@ ReturnedValue Lookup::lookup(ValueRef thisObject, Object *obj, PropertyAttribute
         index = obj->internalClass()->find(name);
         if (index != UINT_MAX) {
             *attrs = obj->internalClass()->propertyData.at(index);
-            return !attrs->isAccessor() ? obj->memberData()->data()[index].asReturnedValue() : obj->getValue(thisObject, obj->propertyAt(index), *attrs);
+            return !attrs->isAccessor() ? obj->memberData()->data[index].asReturnedValue() : obj->getValue(thisObject, obj->propertyAt(index), *attrs);
         }
 
         obj = obj->prototype();
@@ -84,7 +84,7 @@ ReturnedValue Lookup::lookup(Object *obj, PropertyAttributes *attrs)
         if (index != UINT_MAX) {
             level = i;
             *attrs = obj->internalClass()->propertyData.at(index);
-            return !attrs->isAccessor() ? obj->memberData()->data()[index].asReturnedValue() : thisObject->getValue(obj->propertyAt(index), *attrs);
+            return !attrs->isAccessor() ? obj->memberData()->data[index].asReturnedValue() : thisObject->getValue(obj->propertyAt(index), *attrs);
         }
 
         obj = obj->prototype();
@@ -96,7 +96,7 @@ ReturnedValue Lookup::lookup(Object *obj, PropertyAttributes *attrs)
         index = obj->internalClass()->find(name);
         if (index != UINT_MAX) {
             *attrs = obj->internalClass()->propertyData.at(index);
-            return !attrs->isAccessor() ? obj->memberData()->data()[index].asReturnedValue() : thisObject->getValue(obj->propertyAt(index), *attrs);
+            return !attrs->isAccessor() ? obj->memberData()->data[index].asReturnedValue() : thisObject->getValue(obj->propertyAt(index), *attrs);
         }
 
         obj = obj->prototype();
@@ -338,7 +338,7 @@ ReturnedValue Lookup::getter0(Lookup *l, ExecutionEngine *engine, const ValueRef
         // the internal class won't match
         Object *o = object->objectValue();
         if (l->classList[0] == o->internalClass())
-            return o->memberData()->data()[l->index].asReturnedValue();
+            return o->memberData()->data[l->index].asReturnedValue();
     }
     return getterTwoClasses(l, engine, object);
 }
@@ -351,7 +351,7 @@ ReturnedValue Lookup::getter1(Lookup *l, ExecutionEngine *engine, const ValueRef
         Object *o = object->objectValue();
         if (l->classList[0] == o->internalClass() &&
             l->classList[1] == o->prototype()->internalClass())
-            return o->prototype()->memberData()->data()[l->index].asReturnedValue();
+            return o->prototype()->memberData()->data[l->index].asReturnedValue();
     }
     return getterTwoClasses(l, engine, object);
 }
@@ -367,7 +367,7 @@ ReturnedValue Lookup::getter2(Lookup *l, ExecutionEngine *engine, const ValueRef
             if (l->classList[1] == o->internalClass()) {
                 o = o->prototype();
                 if (l->classList[2] == o->internalClass())
-                    return o->memberData()->data()[l->index].asReturnedValue();
+                    return o->memberData()->data[l->index].asReturnedValue();
             }
         }
     }
@@ -382,9 +382,9 @@ ReturnedValue Lookup::getter0getter0(Lookup *l, ExecutionEngine *engine, const V
         // the internal class won't match
         Object *o = object->objectValue();
         if (l->classList[0] == o->internalClass())
-            return o->memberData()->data()[l->index].asReturnedValue();
+            return o->memberData()->data[l->index].asReturnedValue();
         if (l->classList[2] == o->internalClass())
-            return o->memberData()->data()[l->index2].asReturnedValue();
+            return o->memberData()->data[l->index2].asReturnedValue();
     }
     l->getter = getterFallback;
     return getterFallback(l, engine, object);
@@ -397,10 +397,10 @@ ReturnedValue Lookup::getter0getter1(Lookup *l, ExecutionEngine *engine, const V
         // the internal class won't match
         Object *o = object->objectValue();
         if (l->classList[0] == o->internalClass())
-            return o->memberData()->data()[l->index].asReturnedValue();
+            return o->memberData()->data[l->index].asReturnedValue();
         if (l->classList[2] == o->internalClass() &&
             l->classList[3] == o->prototype()->internalClass())
-            return o->prototype()->memberData()->data()[l->index2].asReturnedValue();
+            return o->prototype()->memberData()->data[l->index2].asReturnedValue();
     }
     l->getter = getterFallback;
     return getterFallback(l, engine, object);
@@ -414,10 +414,10 @@ ReturnedValue Lookup::getter1getter1(Lookup *l, ExecutionEngine *engine, const V
         Object *o = object->objectValue();
         if (l->classList[0] == o->internalClass() &&
             l->classList[1] == o->prototype()->internalClass())
-            return o->prototype()->memberData()->data()[l->index].asReturnedValue();
+            return o->prototype()->memberData()->data[l->index].asReturnedValue();
         if (l->classList[2] == o->internalClass() &&
             l->classList[3] == o->prototype()->internalClass())
-            return o->prototype()->memberData()->data()[l->index2].asReturnedValue();
+            return o->prototype()->memberData()->data[l->index2].asReturnedValue();
         return getterFallback(l, engine, object);
     }
     l->getter = getterFallback;
@@ -500,7 +500,7 @@ ReturnedValue Lookup::primitiveGetter0(Lookup *l, ExecutionEngine *engine, const
     if (object->type() == l->type) {
         Object *o = l->proto;
         if (l->classList[0] == o->internalClass())
-            return o->memberData()->data()[l->index].asReturnedValue();
+            return o->memberData()->data[l->index].asReturnedValue();
     }
     l->getter = getterGeneric;
     return getterGeneric(l, engine, object);
@@ -512,7 +512,7 @@ ReturnedValue Lookup::primitiveGetter1(Lookup *l, ExecutionEngine *engine, const
         Object *o = l->proto;
         if (l->classList[0] == o->internalClass() &&
             l->classList[1] == o->prototype()->internalClass())
-            return o->prototype()->memberData()->data()[l->index].asReturnedValue();
+            return o->prototype()->memberData()->data[l->index].asReturnedValue();
     }
     l->getter = getterGeneric;
     return getterGeneric(l, engine, object);
@@ -569,7 +569,7 @@ ReturnedValue Lookup::stringLengthGetter(Lookup *l, ExecutionEngine *engine, con
 ReturnedValue Lookup::arrayLengthGetter(Lookup *l, ExecutionEngine *engine, const ValueRef object)
 {
     if (ArrayObject *a = object->asArrayObject())
-        return a->memberData()->data()[Heap::ArrayObject::LengthPropertyIndex].asReturnedValue();
+        return a->memberData()->data[Heap::ArrayObject::LengthPropertyIndex].asReturnedValue();
 
     l->getter = getterGeneric;
     return getterGeneric(l, engine, object);
@@ -609,7 +609,7 @@ ReturnedValue Lookup::globalGetter0(Lookup *l, ExecutionEngine *engine)
 {
     Object *o = engine->globalObject;
     if (l->classList[0] == o->internalClass())
-        return o->memberData()->data()[l->index].asReturnedValue();
+        return o->memberData()->data[l->index].asReturnedValue();
 
     l->globalGetter = globalGetterGeneric;
     return globalGetterGeneric(l, engine);
@@ -620,7 +620,7 @@ ReturnedValue Lookup::globalGetter1(Lookup *l, ExecutionEngine *engine)
     Object *o = engine->globalObject;
     if (l->classList[0] == o->internalClass() &&
         l->classList[1] == o->prototype()->internalClass())
-        return o->prototype()->memberData()->data()[l->index].asReturnedValue();
+        return o->prototype()->memberData()->data[l->index].asReturnedValue();
 
     l->globalGetter = globalGetterGeneric;
     return globalGetterGeneric(l, engine);
@@ -634,7 +634,7 @@ ReturnedValue Lookup::globalGetter2(Lookup *l, ExecutionEngine *engine)
         if (l->classList[1] == o->internalClass()) {
             o = o->prototype();
             if (l->classList[2] == o->internalClass()) {
-                return o->prototype()->memberData()->data()[l->index].asReturnedValue();
+                return o->prototype()->memberData()->data[l->index].asReturnedValue();
             }
         }
     }
@@ -748,7 +748,7 @@ void Lookup::setter0(Lookup *l, ExecutionEngine *engine, const ValueRef object,
 {
     Object *o = static_cast<Object *>(object->asManaged());
     if (o && o->internalClass() == l->classList[0]) {
-        o->memberData()->data()[l->index] = *value;
+        o->memberData()->data[l->index] = *value;
         return;
     }
 
@@ -760,9 +760,9 @@ void Lookup::setterInsert0(Lookup *l, ExecutionEngine *engine, const ValueRef ob
     Object *o = static_cast<Object *>(object->asManaged());
     if (o && o->internalClass() == l->classList[0]) {
         if (!o->prototype()) {
-            if (!o->memberData() || l->index >= o->memberData()->size())
+            if (!o->memberData() || l->index >= o->memberData()->size)
                 o->ensureMemberIndex(l->index);
-            o->memberData()->data()[l->index] = *value;
+            o->memberData()->data[l->index] = *value;
             o->setInternalClass(l->classList[3]);
             return;
         }
@@ -778,9 +778,9 @@ void Lookup::setterInsert1(Lookup *l, ExecutionEngine *engine, const ValueRef ob
     if (o && o->internalClass() == l->classList[0]) {
         Object *p = o->prototype();
         if (p && p->internalClass() == l->classList[1]) {
-            if (!o->memberData() || l->index >= o->memberData()->size())
+            if (!o->memberData() || l->index >= o->memberData()->size)
                 o->ensureMemberIndex(l->index);
-            o->memberData()->data()[l->index] = *value;
+            o->memberData()->data[l->index] = *value;
             o->setInternalClass(l->classList[3]);
             return;
         }
@@ -798,9 +798,9 @@ void Lookup::setterInsert2(Lookup *l, ExecutionEngine *engine, const ValueRef ob
         if (p && p->internalClass() == l->classList[1]) {
             p = p->prototype();
             if (p && p->internalClass() == l->classList[2]) {
-                if (!o->memberData() || l->index >= o->memberData()->size())
+                if (!o->memberData() || l->index >= o->memberData()->size)
                     o->ensureMemberIndex(l->index);
-                o->memberData()->data()[l->index] = *value;
+                o->memberData()->data[l->index] = *value;
                 o->setInternalClass(l->classList[3]);
                 return;
             }
@@ -816,11 +816,11 @@ void Lookup::setter0setter0(Lookup *l, ExecutionEngine *engine, const ValueRef o
     Object *o = static_cast<Object *>(object->asManaged());
     if (o) {
         if (o->internalClass() == l->classList[0]) {
-            o->memberData()->data()[l->index] = *value;
+            o->memberData()->data[l->index] = *value;
             return;
         }
         if (o->internalClass() == l->classList[1]) {
-            o->memberData()->data()[l->index2] = *value;
+            o->memberData()->data[l->index2] = *value;
             return;
         }
     }
index 78614ee..755f699 100644 (file)
@@ -468,7 +468,7 @@ void Object::setLookup(Managed *m, Lookup *l, const ValueRef value)
             l->classList[0] = o->internalClass();
             l->index = idx;
             l->setter = Lookup::setter0;
-            o->memberData()->data()[idx] = *value;
+            o->memberData()->data[idx] = *value;
             return;
         }
 
@@ -1158,7 +1158,7 @@ ReturnedValue ArrayObject::getLookup(Managed *m, Lookup *l)
         // special case, as the property is on the object itself
         l->getter = Lookup::arrayLengthGetter;
         ArrayObject *a = static_cast<ArrayObject *>(m);
-        return a->memberData()->data()[Heap::ArrayObject::LengthPropertyIndex].asReturnedValue();
+        return a->memberData()->data[Heap::ArrayObject::LengthPropertyIndex].asReturnedValue();
     }
     return Object::getLookup(m, l);
 }
@@ -1166,9 +1166,9 @@ ReturnedValue ArrayObject::getLookup(Managed *m, Lookup *l)
 uint ArrayObject::getLength(const Managed *m)
 {
     const ArrayObject *a = static_cast<const ArrayObject *>(m);
-    if (a->memberData()->data()[Heap::ArrayObject::LengthPropertyIndex].isInteger())
-        return a->memberData()->data()[Heap::ArrayObject::LengthPropertyIndex].integerValue();
-    return Primitive::toUInt32(a->memberData()->data()[Heap::ArrayObject::LengthPropertyIndex].doubleValue());
+    if (a->memberData()->data[Heap::ArrayObject::LengthPropertyIndex].isInteger())
+        return a->memberData()->data[Heap::ArrayObject::LengthPropertyIndex].integerValue();
+    return Primitive::toUInt32(a->memberData()->data[Heap::ArrayObject::LengthPropertyIndex].doubleValue());
 }
 
 QStringList ArrayObject::toQStringList() const
index e3c3e37..2e2d433 100644 (file)
@@ -96,14 +96,14 @@ struct Q_QML_EXPORT Object: Managed {
         IsObject = true
     };
 
+    Heap::MemberData *memberData() { return d()->memberData; }
+    const Heap::MemberData *memberData() const { return d()->memberData; }
     // ### GC
-    MemberData *memberData() { return reinterpret_cast<MemberData *>(d()->memberData); }
-    const MemberData *memberData() const { return reinterpret_cast<const MemberData *>(d()->memberData); }
     ArrayData *arrayData() const { return reinterpret_cast<ArrayData *>(d()->arrayData); }
     void setArrayData(ArrayData *a) { d()->arrayData = a->d(); }
 
-    const Property *propertyAt(uint index) const { return reinterpret_cast<const Property *>(memberData()->data() + index); }
-    Property *propertyAt(uint index) { return reinterpret_cast<Property *>(memberData()->data() + index); }
+    const Property *propertyAt(uint index) const { return reinterpret_cast<const Property *>(memberData()->data + index); }
+    Property *propertyAt(uint index) { return reinterpret_cast<Property *>(memberData()->data + index); }
 
     const ObjectVTable *vtable() const { return reinterpret_cast<const ObjectVTable *>(internalClass()->vtable); }
     Object *prototype() const { return internalClass()->prototype; }
@@ -339,7 +339,7 @@ struct ArrayObject: Object {
 inline void Object::setArrayLengthUnchecked(uint l)
 {
     if (isArrayObject())
-        memberData()->data()[Heap::ArrayObject::LengthPropertyIndex] = Primitive::fromUInt32(l);
+        memberData()->data[Heap::ArrayObject::LengthPropertyIndex] = Primitive::fromUInt32(l);
 }
 
 inline void Object::push_back(const ValueRef v)
index 0c6965e..7758cd8 100644 (file)
@@ -391,8 +391,8 @@ ReturnedValue RegExpPrototype::method_exec(CallContext *ctx)
         array->arrayPut(i, v);
     }
     array->setArrayLengthUnchecked(len);
-    array->memberData()->data()[Index_ArrayIndex] = Primitive::fromInt32(result);
-    array->memberData()->data()[Index_ArrayInput] = arg.asReturnedValue();
+    array->memberData()->data[Index_ArrayIndex] = Primitive::fromInt32(result);
+    array->memberData()->data[Index_ArrayInput] = arg.asReturnedValue();
 
     RegExpCtor::Data *dd = regExpCtor->d();
     dd->lastMatch = array;
index eab8498..2aaf77b 100644 (file)
@@ -1196,7 +1196,7 @@ ReturnedValue Runtime::objectLiteral(ExecutionEngine *engine, const QV4::Value *
     }
 
     for (uint i = 0; i < klass->size; ++i)
-        o->memberData()->data()[i] = *args++;
+        o->memberData()->data[i] = *args++;
 
     if (arrayValueCount > 0) {
         ScopedValue entry(scope);