diff options
author | Aaron Kennedy <aaron.kennedy@nokia.com> | 2011-06-08 10:40:14 +1000 |
---|---|---|
committer | Aaron Kennedy <aaron.kennedy@nokia.com> | 2011-06-08 10:40:14 +1000 |
commit | 8b39dbda19bfc0449022aacaaa2eb2975e9226c8 (patch) | |
tree | 1ab99cccc9e278ed12bd74fd3a3d1d2f707f29ba | |
parent | 6609cc8edf8d6a5744012ff22c1e54e5cc3bc917 (diff) |
Implement gc() method
-rw-r--r-- | src/declarative/qml/qdeclarativeengine.cpp | 3 | ||||
-rw-r--r-- | src/declarative/qml/v8/qv8engine.cpp | 13 | ||||
-rw-r--r-- | src/declarative/qml/v8/qv8engine_p.h | 3 |
3 files changed, 17 insertions, 2 deletions
diff --git a/src/declarative/qml/qdeclarativeengine.cpp b/src/declarative/qml/qdeclarativeengine.cpp index fa606ab588..c34987e3e3 100644 --- a/src/declarative/qml/qdeclarativeengine.cpp +++ b/src/declarative/qml/qdeclarativeengine.cpp @@ -824,8 +824,7 @@ void QDeclarativeEngine::setOutputWarningsToStandardError(bool enabled) */ void QDeclarativeEngine::collectGarbage() { - v8::V8::LowMemoryNotification(); - while (!v8::V8::IdleNotification()) {} + QV8Engine::gc(); } /*! diff --git a/src/declarative/qml/v8/qv8engine.cpp b/src/declarative/qml/v8/qv8engine.cpp index 87bb1fc69b..693c8aa952 100644 --- a/src/declarative/qml/v8/qv8engine.cpp +++ b/src/declarative/qml/v8/qv8engine.cpp @@ -571,6 +571,7 @@ void QV8Engine::initializeGlobal(v8::Handle<v8::Object> global) global->Set(v8::String::New("print"), printFn); global->Set(v8::String::New("console"), console); global->Set(v8::String::New("Qt"), qt); + global->Set(v8::String::New("gc"), V8FUNCTION(gc, this)); // XXX mainthread only m_xmlHttpRequestData = qt_add_qmlxmlhttprequest(this); @@ -608,6 +609,18 @@ void QV8Engine::freezeGlobal() test->Run(); } +void QV8Engine::gc() +{ + v8::V8::LowMemoryNotification(); + while (!v8::V8::IdleNotification()) {} +} + +v8::Handle<v8::Value> QV8Engine::gc(const v8::Arguments &args) +{ + gc(); + return v8::Undefined(); +} + v8::Handle<v8::Value> QV8Engine::print(const v8::Arguments &args) { QString result; diff --git a/src/declarative/qml/v8/qv8engine_p.h b/src/declarative/qml/v8/qv8engine_p.h index 5aec866682..5810b3e604 100644 --- a/src/declarative/qml/v8/qv8engine_p.h +++ b/src/declarative/qml/v8/qv8engine_p.h @@ -238,6 +238,8 @@ public: // Return the list of illegal id names (the names of the properties on the global object) const QSet<QString> &illegalNames() const; + static void gc(); + private: QDeclarativeEngine *m_engine; v8::Persistent<v8::Context> m_context; @@ -263,6 +265,7 @@ private: void initializeGlobal(v8::Handle<v8::Object>); void freezeGlobal(); + static v8::Handle<v8::Value> gc(const v8::Arguments &args); static v8::Handle<v8::Value> print(const v8::Arguments &args); static v8::Handle<v8::Value> isQtObject(const v8::Arguments &args); static v8::Handle<v8::Value> rgba(const v8::Arguments &args); |