aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4managed_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/qml/jsruntime/qv4managed_p.h')
-rw-r--r--src/qml/jsruntime/qv4managed_p.h16
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;
+}
+
}