From ad7f91c59a87564d2d1d9baad407ba7b07a075a7 Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Tue, 15 Oct 2013 16:00:49 +0200 Subject: Turn on exact garbage collection by default Keep conservative GC as a fallback for testing Enable all tests again that were skipped due to GC issues. Change-Id: I8e0fa728207bdd39a96d0acf95e27841157d8402 Reviewed-by: Simon Hausmann --- tests/auto/qml/qjsengine/tst_qjsengine.cpp | 27 +++++---------------------- 1 file changed, 5 insertions(+), 22 deletions(-) (limited to 'tests/auto/qml/qjsengine') diff --git a/tests/auto/qml/qjsengine/tst_qjsengine.cpp b/tests/auto/qml/qjsengine/tst_qjsengine.cpp index 7dc530b278..39086d75ac 100644 --- a/tests/auto/qml/qjsengine/tst_qjsengine.cpp +++ b/tests/auto/qml/qjsengine/tst_qjsengine.cpp @@ -64,21 +64,6 @@ Q_DECLARE_METATYPE(QList) Q_DECLARE_METATYPE(QObjectList) -// The JavaScriptCore GC marks the C stack. To try to ensure that there is -// no JSObject* left in stack memory by the compiler, we call this function -// to zap some bytes of memory before calling collectGarbage(). -static void NO_INLINE zapSomeStack() -{ - char *buf = (char*)alloca(4096); - memset(buf, 0, 4096); -} - -static void collectGarbage_helper(QJSEngine &eng) -{ - zapSomeStack(); - eng.collectGarbage(); -} - class tst_QJSEngine : public QObject { Q_OBJECT @@ -452,7 +437,6 @@ void tst_QJSEngine::newQObject() void tst_QJSEngine::newQObject_ownership() { - QSKIP("unreliable test due to our conservative GC"); QJSEngine eng; { QPointer ptr = new QObject(); @@ -460,7 +444,7 @@ void tst_QJSEngine::newQObject_ownership() { QJSValue v = eng.newQObject(ptr); } - collectGarbage_helper(eng); + eng.collectGarbage(); if (ptr) QGuiApplication::sendPostedEvents(ptr, QEvent::DeferredDelete); QVERIFY(ptr == 0); @@ -472,7 +456,7 @@ void tst_QJSEngine::newQObject_ownership() QJSValue v = eng.newQObject(ptr); } QObject *before = ptr; - collectGarbage_helper(eng); + eng.collectGarbage(); QVERIFY(ptr == before); delete ptr; } @@ -490,7 +474,7 @@ void tst_QJSEngine::newQObject_ownership() { QJSValue v = eng.newQObject(ptr); } - collectGarbage_helper(eng); + eng.collectGarbage(); // no parent, so it should be like ScriptOwnership if (ptr) QGuiApplication::sendPostedEvents(ptr, QEvent::DeferredDelete); @@ -503,7 +487,7 @@ void tst_QJSEngine::newQObject_ownership() { QJSValue v = eng.newQObject(child); } - collectGarbage_helper(eng); + eng.collectGarbage(); // has parent, so it should be like QtOwnership QVERIFY(child != 0); delete parent; @@ -1241,7 +1225,6 @@ void tst_QJSEngine::castWithMultipleInheritance() void tst_QJSEngine::collectGarbage() { - QSKIP("This test is not reliable due to our conservative GC"); QJSEngine eng; eng.evaluate("a = new Object(); a = new Object(); a = new Object()"); QJSValue a = eng.newObject(); @@ -1250,7 +1233,7 @@ void tst_QJSEngine::collectGarbage() QPointer ptr = new QObject(); QVERIFY(ptr != 0); (void)eng.newQObject(ptr); - collectGarbage_helper(eng); + eng.collectGarbage(); if (ptr) QGuiApplication::sendPostedEvents(ptr, QEvent::DeferredDelete); QVERIFY(ptr == 0); -- cgit v1.2.3