28Heap::MemberData *MemberData::allocate(ExecutionEngine *e, uint n, Heap::MemberData *old)
30 Q_ASSERT(!old || old->values.size <= n);
34 size_t alloc = MemoryManager::align(
sizeof(Heap::MemberData) + (n - 1)*
sizeof(Value));
36 alloc = nextPowerOfTwo(alloc);
40 const size_t intMax = std::numeric_limits<
int>::max();
46 const size_t oldSize =
sizeof(Heap::MemberData) + (old->values.size - 1) *
sizeof(Value);
49 m = e->memoryManager->allocManaged<MemberData>(alloc);
51 memcpy(m, old, oldSize);
53 m = e->memoryManager->allocManaged<MemberData>(alloc);
57 m->values.alloc =
static_cast<uint>((alloc -
sizeof(Heap::MemberData) +
sizeof(Value))/
sizeof(Value));
58 m->values.size = m->values.alloc;