aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/memory/qv4heap_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/qml/memory/qv4heap_p.h')
-rw-r--r--src/qml/memory/qv4heap_p.h23
1 files changed, 20 insertions, 3 deletions
diff --git a/src/qml/memory/qv4heap_p.h b/src/qml/memory/qv4heap_p.h
index 3a7885467d..c396f0fd21 100644
--- a/src/qml/memory/qv4heap_p.h
+++ b/src/qml/memory/qv4heap_p.h
@@ -40,11 +40,28 @@ QT_BEGIN_NAMESPACE
namespace QV4 {
+struct VTable
+{
+ const VTable * const parent;
+ uint isExecutionContext : 1;
+ uint isString : 1;
+ uint isObject : 1;
+ uint isFunctionObject : 1;
+ uint isErrorObject : 1;
+ uint isArrayData : 1;
+ uint unused : 18;
+ uint type : 8;
+ const char *className;
+ void (*destroy)(Heap::Base *);
+ void (*markObjects)(Heap::Base *, ExecutionEngine *e);
+ bool (*isEqualTo)(Managed *m, Managed *other);
+};
+
namespace Heap {
struct Q_QML_EXPORT Base {
union {
- const ManagedVTable *vtable;
+ const VTable *vtable;
quintptr mm_data;
};
@@ -57,8 +74,8 @@ struct Q_QML_EXPORT Base {
PointerMask = ~0x3
};
- ManagedVTable *gcGetVtable() const {
- return reinterpret_cast<ManagedVTable *>(mm_data & PointerMask);
+ VTable *gcGetVtable() const {
+ return reinterpret_cast<VTable *>(mm_data & PointerMask);
}
inline bool isMarked() const {
return mm_data & MarkBit;