aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml/v4
diff options
context:
space:
mode:
authorMatthew Vogt <matthew.vogt@nokia.com>2012-05-04 08:32:45 +1000
committerQt by Nokia <qt-info@nokia.com>2012-05-17 08:58:45 +0200
commit43a6cc75886c662e63db440dd191cefa1fe956f3 (patch)
treecd3247453a0c2a59e0c5d3af11434d18761c2de4 /src/qml/qml/v4
parent9af1a7d0aee4f9ed48b2519779388830a8dd03e9 (diff)
Add QQmlEngine::trimComponentCache()
Allow unused data in the engine's component cache to be safely discarded so that the memory can be freed for other purposes. Unloading of scripts that are no longer required after trimming unused components is not yet supported. Task-number: QTBUG-25653 Change-Id: I37bc9d5592eeb5edceeb34d010a555dcffd11cea Reviewed-by: Michael Brasser <michael.brasser@nokia.com>
Diffstat (limited to 'src/qml/qml/v4')
-rw-r--r--src/qml/qml/v4/qv4bindings.cpp14
-rw-r--r--src/qml/qml/v4/qv4bindings_p.h4
2 files changed, 5 insertions, 13 deletions
diff --git a/src/qml/qml/v4/qv4bindings.cpp b/src/qml/qml/v4/qv4bindings.cpp
index 2c60883207..6ab1e00b5c 100644
--- a/src/qml/qml/v4/qv4bindings.cpp
+++ b/src/qml/qml/v4/qv4bindings.cpp
@@ -251,15 +251,10 @@ void Register::init(Type type)
} // end of anonymous namespace
-QV4Bindings::QV4Bindings(const char *programData,
- QQmlContextData *context,
- QQmlRefCount *ref)
-: subscriptions(0), program(0), dataRef(0), bindings(0)
+QV4Bindings::QV4Bindings(const char *programData, QQmlContextData *context)
+: subscriptions(0), program(0), bindings(0)
{
program = (QV4Program *)programData;
- dataRef = ref;
- if (dataRef) dataRef->addref();
-
if (program) {
subscriptions = new Subscription[program->subscriptions];
bindings = new Binding[program->bindings];
@@ -270,9 +265,8 @@ QV4Bindings::QV4Bindings(const char *programData,
QV4Bindings::~QV4Bindings()
{
- delete [] bindings;
+ delete [] bindings; bindings = 0;
delete [] subscriptions; subscriptions = 0;
- if (dataRef) dataRef->release();
}
QQmlAbstractBinding *QV4Bindings::configBinding(int index, QObject *target,
@@ -727,7 +721,7 @@ void **QV4Bindings::getDecodeInstrTable()
{
static void **decode_instr;
if (!decode_instr) {
- QV4Bindings *dummy = new QV4Bindings(0, 0, 0);
+ QV4Bindings *dummy = new QV4Bindings(0, 0);
quint32 executedBlocks = 0;
dummy->run(0, executedBlocks, 0, 0, 0, 0,
QQmlPropertyPrivate::BypassInterceptor,
diff --git a/src/qml/qml/v4/qv4bindings_p.h b/src/qml/qml/v4/qv4bindings_p.h
index cb483d1f95..be58e02358 100644
--- a/src/qml/qml/v4/qv4bindings_p.h
+++ b/src/qml/qml/v4/qv4bindings_p.h
@@ -68,8 +68,7 @@ class QV4Bindings : public QQmlAbstractExpression,
{
Q_DECLARE_TR_FUNCTIONS(QV4Bindings)
public:
- QV4Bindings(const char *program, QQmlContextData *context,
- QQmlRefCount *);
+ QV4Bindings(const char *program, QQmlContextData *context);
virtual ~QV4Bindings();
QQmlAbstractBinding *configBinding(int index, QObject *target,
@@ -131,7 +130,6 @@ private:
void run(Binding *, QQmlPropertyPrivate::WriteFlags flags);
QV4Program *program;
- QQmlRefCount *dataRef;
Binding *bindings;
void init();