diff options
author | Kent Hansen <khansen@trolltech.com> | 2009-07-16 14:50:50 (GMT) |
---|---|---|
committer | Kent Hansen <khansen@trolltech.com> | 2009-07-16 14:50:50 (GMT) |
commit | 898437f97e3f3bbb96b501148d5f883d099133f7 (patch) | |
tree | dbe476f9d08df10fae21900739e6a44c433b9642 /src/script/api/qscriptengine.cpp | |
parent | b6e5b8116ed297cdc127485c914e461d0cf7c56b (diff) | |
download | Qt-898437f97e3f3bbb96b501148d5f883d099133f7.zip Qt-898437f97e3f3bbb96b501148d5f883d099133f7.tar.gz Qt-898437f97e3f3bbb96b501148d5f883d099133f7.tar.bz2 |
start implementing constructors for QMetaObject wrappers
Diffstat (limited to 'src/script/api/qscriptengine.cpp')
-rw-r--r-- | src/script/api/qscriptengine.cpp | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/src/script/api/qscriptengine.cpp b/src/script/api/qscriptengine.cpp index b5ba4ff..af09572 100644 --- a/src/script/api/qscriptengine.cpp +++ b/src/script/api/qscriptengine.cpp @@ -669,8 +669,8 @@ JSC::JSValue functionPrint(JSC::ExecState* exec, JSC::JSObject*, JSC::JSValue, c JSC::JSValue functionGC(JSC::ExecState* exec, JSC::JSObject*, JSC::JSValue, const JSC::ArgList&) { - JSC::JSLock lock(false); - exec->heap()->collect(); + QScriptEnginePrivate *engine = static_cast<GlobalObject*>(exec->lexicalGlobalObject())->engine; + engine->collectGarbage(); return JSC::jsUndefined(); } @@ -1050,6 +1050,15 @@ bool QScriptEnginePrivate::isCollecting() const return globalObject->globalData()->heap.isBusy(); } +void QScriptEnginePrivate::collectGarbage() +{ + // ### why isn't the global object always marked by the Collector? + if (!globalObject->marked()) + globalObject->mark(); + JSC::JSLock lock(false); + globalData->heap.collect(); +} + #ifndef QT_NO_QOBJECT JSC::JSValue QScriptEnginePrivate::newQObject( @@ -3135,11 +3144,7 @@ QStringList QScriptEngine::importedExtensions() const void QScriptEngine::collectGarbage() { Q_D(QScriptEngine); - // ### why isn't the global object always marked by the Collector? - if (!d->globalObject->marked()) - d->globalObject->mark(); - JSC::JSLock lock(false); - d->globalData->heap.collect(); + d->collectGarbage(); } /*! |