Clean up memory manager ownership
authorSimon Hausmann <simon.hausmann@digia.com>
Thu, 3 Jan 2013 11:26:19 +0000 (12:26 +0100)
committerLars Knoll <lars.knoll@digia.com>
Thu, 3 Jan 2013 13:24:52 +0000 (14:24 +0100)
Since we have now only one memory manager, we might as well let the
ExecutionEngine create and own it.

Change-Id: I908adadf64da59e0b8f4c09d4d9502785399cb99
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
main.cpp
qmljs_engine.cpp
qmljs_engine.h

index 8f1f147..2404ee9 100644 (file)
--- a/main.cpp
+++ b/main.cpp
@@ -333,7 +333,6 @@ int main(int argc, char *argv[])
 #endif // QMLJS_NO_LLVM
     case use_masm:
     case use_moth: {
-        QScopedPointer<QQmlJS::VM::MemoryManager> mm(new QQmlJS::VM::MemoryManager);
         QScopedPointer<QQmlJS::EvalISelFactory> iSelFactory;
         if (mode == use_moth) {
             iSelFactory.reset(new QQmlJS::Moth::ISelFactory);
@@ -341,7 +340,7 @@ int main(int argc, char *argv[])
             iSelFactory.reset(new QQmlJS::MASM::ISelFactory);
         }
 
-        QQmlJS::VM::ExecutionEngine vm(mm.data(), iSelFactory.data());
+        QQmlJS::VM::ExecutionEngine vm(iSelFactory.data());
 
         QScopedPointer<QQmlJS::Debugging::Debugger> debugger;
         if (enableDebugging)
@@ -396,7 +395,7 @@ int main(int argc, char *argv[])
             }
         }
 
-        mm->dumpStats();
+        vm.memoryManager->dumpStats();
     } return EXIT_SUCCESS;
     }
 }
index 78fd64b..e322cfa 100644 (file)
@@ -66,8 +66,8 @@ public:
     }
 };
 
-ExecutionEngine::ExecutionEngine(MemoryManager *memoryManager, EvalISelFactory *factory)
-    : memoryManager(memoryManager)
+ExecutionEngine::ExecutionEngine(EvalISelFactory *factory)
+    : memoryManager(new QQmlJS::VM::MemoryManager)
     , iselFactory(factory)
     , debugger(0)
     , globalObject(Value::nullValue())
@@ -216,6 +216,7 @@ ExecutionEngine::~ExecutionEngine()
     delete globalObject.asObject();
     delete rootContext;
     qDeleteAll(functions);
+    delete memoryManager;
 }
 
 ExecutionContext *ExecutionEngine::newContext()
index dd856f6..e281620 100644 (file)
@@ -157,7 +157,7 @@ struct ExecutionEngine
     QScopedPointer<class StringPool> stringPool;
     QVector<Function *> functions;
 
-    ExecutionEngine(MemoryManager *memoryManager, EvalISelFactory *iselFactory);
+    ExecutionEngine(EvalISelFactory *iselFactory);
     ~ExecutionEngine();
 
     ExecutionContext *newContext();