diff options
author | Lars Knoll <[email protected]> | 2014-04-05 20:23:20 +0200 |
---|---|---|
committer | Simon Hausmann <[email protected]> | 2014-07-22 13:48:54 +0200 |
commit | b11ec085703a0b019c8115ff505ee6e2553fd4f1 (patch) | |
tree | 3336b31ba690f9b200b7fee8cc133aa4bf2e7837 /src/qml/jsruntime/qv4managed.cpp | |
parent | 05f17e841f971d3c8f635cc044c60c970c2055c9 (diff) |
Move Managed data into it's own subclass
This prepares for moving over to a d pointer scheme,
where Managed subclasses don't hold any data directly. This
is required to be able to move over to a modern GC.
Change-Id: I3f59633ac07a7da461bd2d4f0f9f3a8e3b0baf02
Reviewed-by: Simon Hausmann <[email protected]>
Diffstat (limited to 'src/qml/jsruntime/qv4managed.cpp')
-rw-r--r-- | src/qml/jsruntime/qv4managed.cpp | 28 |
1 files changed, 5 insertions, 23 deletions
diff --git a/src/qml/jsruntime/qv4managed.cpp b/src/qml/jsruntime/qv4managed.cpp index 69022df07d..1bddf69dbb 100644 --- a/src/qml/jsruntime/qv4managed.cpp +++ b/src/qml/jsruntime/qv4managed.cpp @@ -70,33 +70,15 @@ void *Managed::operator new(size_t size, MemoryManager *mm) return mm->allocManaged(size); } -void Managed::operator delete(void *ptr) -{ - if (!ptr) - return; - - Managed *m = static_cast<Managed *>(ptr); - m->_data = 0; - m->markBit = 0; - m->~Managed(); -} - -void Managed::operator delete(void *ptr, MemoryManager *mm) -{ - Q_UNUSED(mm); - - operator delete(ptr); -} - ExecutionEngine *Managed::engine() const { - return internalClass ? internalClass->engine : 0; + return internalClass()->engine; } QString Managed::className() const { const char *s = 0; - switch (Type(internalClass->vtable->type)) { + switch (Type(internalClass()->vtable->type)) { case Type_Invalid: case Type_String: return QString(); @@ -125,7 +107,7 @@ QString Managed::className() const s = "RegExp"; break; case Type_ErrorObject: - switch (ErrorObject::ErrorType(subtype)) { + switch (ErrorObject::ErrorType(subtype())) { case ErrorObject::Error: s = "Error"; break; @@ -178,8 +160,8 @@ QString Managed::className() const void Managed::setVTable(const ManagedVTable *vt) { - Q_ASSERT(internalClass); - internalClass = internalClass->changeVTable(vt); + Q_ASSERT(internalClass()); + managedData()->internalClass = internalClass()->changeVTable(vt); } bool Managed::isEqualTo(Managed *, Managed *) |