aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4engine.cpp
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2018-01-05 13:20:27 +0100
committerLars Knoll <lars.knoll@qt.io>2018-04-12 13:58:30 +0000
commitc7bac1588e0e6a65187042afbde072afa6b8cd9b (patch)
treeed9ebe3c03cf959111e6c7e422febb2dde2a89a7 /src/qml/jsruntime/qv4engine.cpp
parent340819e81cf36c01bd21a170fd1a932202257899 (diff)
Remove the pool allocator from InternalClass
Makes it easier to transition it over to be controlled by the GC. Change-Id: I6bea738b3852abfc7870b71e639efc595eeb28fc Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/qml/jsruntime/qv4engine.cpp')
-rw-r--r--src/qml/jsruntime/qv4engine.cpp11
1 files changed, 4 insertions, 7 deletions
diff --git a/src/qml/jsruntime/qv4engine.cpp b/src/qml/jsruntime/qv4engine.cpp
index 82ce54224b..7f908ccef9 100644
--- a/src/qml/jsruntime/qv4engine.cpp
+++ b/src/qml/jsruntime/qv4engine.cpp
@@ -199,9 +199,7 @@ ExecutionEngine::ExecutionEngine(QJSEngine *jsEngine)
identifierTable = new IdentifierTable(this);
- classPool = new InternalClassPool;
-
- internalClasses[Class_Empty] = new (classPool) InternalClass(this);
+ internalClasses[Class_Empty] = new InternalClass(this);
internalClasses[Class_String] = internalClasses[EngineBase::Class_Empty]->changeVTable(QV4::String::staticVTable());
internalClasses[Class_MemberData] = internalClasses[EngineBase::Class_Empty]->changeVTable(QV4::MemberData::staticVTable());
internalClasses[Class_SimpleArrayData] = internalClasses[EngineBase::Class_Empty]->changeVTable(QV4::SimpleArrayData::staticVTable());
@@ -497,8 +495,7 @@ ExecutionEngine::~ExecutionEngine()
while (!compilationUnits.isEmpty())
(*compilationUnits.begin())->unlink();
- internalClasses[Class_Empty]->destroy();
- delete classPool;
+ internalClasses[Class_Empty]->destroyAll();
delete bumperPointerAllocator;
delete regExpCache;
delete regExpAllocator;
@@ -536,7 +533,7 @@ void ExecutionEngine::initRootContext()
InternalClass *ExecutionEngine::newClass(InternalClass *other)
{
- return new (classPool) InternalClass(other);
+ return new InternalClass(other);
}
InternalClass *ExecutionEngine::newInternalClass(const VTable *vtable, Object *prototype)
@@ -922,7 +919,7 @@ void ExecutionEngine::markObjects(MarkStack *markStack)
setter->mark(markStack);
}
- classPool->markObjects(markStack);
+ InternalClass::markObjects(internalClasses[EngineBase::Class_Empty], markStack);
markStack->drain();
for (auto compilationUnit: compilationUnits) {