aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4variantobject_p.h
diff options
context:
space:
mode:
authorErik Verbruggen <erik.verbruggen@qt.io>2016-10-05 12:18:20 +0200
committerErik Verbruggen <erik.verbruggen@qt.io>2016-10-05 10:51:29 +0000
commita166367bd877a55e552e3dfe5cf2ee7fa1561100 (patch)
tree390b4596474306a1df94e0bd9bfe208f621f6be0 /src/qml/jsruntime/qv4variantobject_p.h
parent54765de17916948ef56a3fd1111e8c765c07155a (diff)
QML: Move the ScarceResourceData from VariantObject onto the heap
So now VariantObject is nearly a trivial struct. Change-Id: Ifc54c04d9686c03e12066c5287823dd3b1315d2a Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/qml/jsruntime/qv4variantobject_p.h')
-rw-r--r--src/qml/jsruntime/qv4variantobject_p.h15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/qml/jsruntime/qv4variantobject_p.h b/src/qml/jsruntime/qv4variantobject_p.h
index e50706ef94..9b744faf75 100644
--- a/src/qml/jsruntime/qv4variantobject_p.h
+++ b/src/qml/jsruntime/qv4variantobject_p.h
@@ -64,16 +64,27 @@ namespace QV4 {
namespace Heap {
-struct VariantObject : Object, public ExecutionEngine::ScarceResourceData
+struct VariantObject : Object
{
VariantObject();
VariantObject(const QVariant &value);
~VariantObject() {
+ Q_ASSERT(scarceData);
if (isScarce())
- node.remove();
+ addVmePropertyReference();
+ delete scarceData;
}
bool isScarce() const;
int vmePropertyReferenceCount;
+
+ const QVariant &data() const { return scarceData->data; }
+ QVariant &data() { return scarceData->data; }
+
+ void addVmePropertyReference() { scarceData->node.remove(); }
+ void removeVmePropertyReference() { internalClass->engine->scarceResources.insert(scarceData); }
+
+private:
+ ExecutionEngine::ScarceResourceData *scarceData;
};
}