diff options
Diffstat (limited to 'src/qml/jsruntime/qv4managed_p.h')
-rw-r--r-- | src/qml/jsruntime/qv4managed_p.h | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/qml/jsruntime/qv4managed_p.h b/src/qml/jsruntime/qv4managed_p.h index c062ec4f5b..c73ad10230 100644 --- a/src/qml/jsruntime/qv4managed_p.h +++ b/src/qml/jsruntime/qv4managed_p.h @@ -207,7 +207,7 @@ struct Q_QML_PRIVATE_EXPORT Managed void setVTable(const ManagedVTable *vt); ReturnedValue asReturnedValue() const { - return reinterpret_cast<Managed *>(const_cast<Data *>(this))->asReturnedValue(); + return Value::fromHeapObject(const_cast<Data *>(this)).asReturnedValue(); } void *operator new(size_t, Managed *m) { return m; } @@ -377,6 +377,20 @@ inline FunctionObject *managed_cast(Managed *m) return m ? m->asFunctionObject() : 0; } +inline Value Value::fromManaged(Managed *m) +{ + if (!m) + return QV4::Primitive::undefinedValue(); + Value v; +#if QT_POINTER_SIZE == 8 + v.m = &m->data; +#else + v.tag = Managed_Type; + v.m = &m->data; +#endif + return v; +} + } |