diff options
author | Erik Verbruggen <erik.verbruggen@qt.io> | 2016-10-05 12:18:20 +0200 |
---|---|---|
committer | Erik Verbruggen <erik.verbruggen@qt.io> | 2016-10-05 10:51:29 +0000 |
commit | a166367bd877a55e552e3dfe5cf2ee7fa1561100 (patch) | |
tree | 390b4596474306a1df94e0bd9bfe208f621f6be0 /src/qml/jsruntime/qv4variantobject_p.h | |
parent | 54765de17916948ef56a3fd1111e8c765c07155a (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.h | 15 |
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; }; } |