aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4memberdata.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/qml/jsruntime/qv4memberdata.cpp')
-rw-r--r--src/qml/jsruntime/qv4memberdata.cpp30
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;
}
}