diff options
Diffstat (limited to 'src/qml/jsruntime/qv4memberdata.cpp')
-rw-r--r-- | src/qml/jsruntime/qv4memberdata.cpp | 30 |
1 files changed, 7 insertions, 23 deletions
diff --git a/src/qml/jsruntime/qv4memberdata.cpp b/src/qml/jsruntime/qv4memberdata.cpp index aeb4c38a8e..7eca47c3ce 100644 --- a/src/qml/jsruntime/qv4memberdata.cpp +++ b/src/qml/jsruntime/qv4memberdata.cpp @@ -44,29 +44,13 @@ using namespace QV4; -const ManagedVTable MemberData::static_vtbl = -{ - MemberData::IsExecutionContext, - MemberData::IsString, - MemberData::IsObject, - MemberData::IsFunctionObject, - MemberData::IsErrorObject, - MemberData::IsArrayData, - 0, - MemberData::MyType, - "MemberData", - destroy, - markObjects, - isEqualTo -}; - - +DEFINE_MANAGED_VTABLE(MemberData); void MemberData::markObjects(Managed *that, ExecutionEngine *e) { MemberData *m = static_cast<MemberData *>(that); - for (uint i = 0; i < m->size; ++i) - m->data[i].mark(e); + for (uint i = 0; i < m->d()->size; ++i) + m->d()->data[i].mark(e); } void Members::ensureIndex(QV4::ExecutionEngine *e, uint idx) @@ -74,13 +58,13 @@ void Members::ensureIndex(QV4::ExecutionEngine *e, uint idx) uint s = size(); if (idx >= s) { int newAlloc = qMax((uint)4, 2*idx); - uint alloc = sizeof(MemberData) + (newAlloc)*sizeof(Value); - MemberData *newMemberData = reinterpret_cast<MemberData *>(e->memoryManager->allocManaged(alloc)); + uint alloc = sizeof(MemberData::Data) + (newAlloc)*sizeof(Value); + MemberData *newMemberData = static_cast<MemberData *>(e->memoryManager->allocManaged(alloc)); if (d()) - memcpy(newMemberData, d(), sizeof(MemberData) + s*sizeof(Value)); + memcpy(newMemberData, d(), sizeof(MemberData::Data) + s*sizeof(Value)); else new (newMemberData) MemberData(e->memberDataClass); - newMemberData->size = newAlloc; + newMemberData->d()->size = newAlloc; m = newMemberData; } } |