diff options
Diffstat (limited to 'src/qml/jsruntime/qv4persistent.cpp')
-rw-r--r-- | src/qml/jsruntime/qv4persistent.cpp | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/qml/jsruntime/qv4persistent.cpp b/src/qml/jsruntime/qv4persistent.cpp index 1b191f3384..0b3c7a4da0 100644 --- a/src/qml/jsruntime/qv4persistent.cpp +++ b/src/qml/jsruntime/qv4persistent.cpp @@ -216,7 +216,7 @@ PersistentValue::PersistentValue(const PersistentValue &other) } } -PersistentValue::PersistentValue(ExecutionEngine *engine, const ValueRef value) +PersistentValue::PersistentValue(ExecutionEngine *engine, const Value &value) { val = engine->memoryManager->m_persistentValues->allocate(); *val = value; @@ -228,6 +228,16 @@ PersistentValue::PersistentValue(ExecutionEngine *engine, ReturnedValue value) *val = value; } +PersistentValue::PersistentValue(ExecutionEngine *engine, Object *object) + : val(0) +{ + if (!object) + return; + + val = engine->memoryManager->m_persistentValues->allocate(); + *val = object; +} + PersistentValue::~PersistentValue() { PersistentValueStorage::free(val); @@ -274,7 +284,7 @@ PersistentValue &PersistentValue::operator=(Object *object) return *this; } -void PersistentValue::set(ExecutionEngine *engine, const ValueRef value) +void PersistentValue::set(ExecutionEngine *engine, const Value &value) { if (!val) val = engine->memoryManager->m_persistentValues->allocate(); @@ -323,7 +333,7 @@ WeakValue::~WeakValue() PersistentValueStorage::free(val); } -void WeakValue::set(ExecutionEngine *engine, const ValueRef value) +void WeakValue::set(ExecutionEngine *engine, const Value &value) { if (!val) val = engine->memoryManager->m_weakValues->allocate(); |