Add gc() function to triggering manual call to gc
authorSimon Hausmann <simon.hausmann@digia.com>
Sat, 8 Dec 2012 17:20:54 +0000 (18:20 +0100)
committerLars Knoll <lars.knoll@digia.com>
Mon, 10 Dec 2012 09:33:32 +0000 (10:33 +0100)
Similar to jsc

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

index decb799..919cca7 100644 (file)
--- a/main.cpp
+++ b/main.cpp
@@ -110,6 +110,20 @@ struct TestHarnessError: FunctionObject
     bool &errorOccurred;
 };
 
+struct GC: public FunctionObject
+{
+    GC(ExecutionContext* scope)
+        : FunctionObject(scope)
+    {
+        name = scope->engine->newString("gc");
+    }
+    virtual Value call(ExecutionContext *ctx)
+    {
+        ctx->engine->memoryManager->runGC();
+        return Value::undefinedValue();
+    }
+};
+
 } // builtins
 
 static void showException(QQmlJS::VM::ExecutionContext *ctx)
@@ -341,6 +355,8 @@ int main(int argc, char *argv[])
         QQmlJS::VM::Object *globalObject = vm.globalObject.objectValue();
         globalObject->__put__(ctx, vm.identifier(QStringLiteral("print")),
                                   QQmlJS::VM::Value::fromObject(new (ctx->engine->memoryManager) builtins::Print(ctx)));
+        globalObject->__put__(ctx, vm.identifier(QStringLiteral("gc")),
+                                  QQmlJS::VM::Value::fromObject(new (ctx->engine->memoryManager) builtins::GC(ctx)));
 
         bool errorInTestHarness = false;
         if (!qgetenv("IN_TEST_HARNESS").isEmpty())