aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4managed.cpp
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@theqtcompany.com>2015-01-10 17:55:29 +0100
committerSimon Hausmann <simon.hausmann@digia.com>2015-01-20 13:29:59 +0100
commit8a23c8a613b5eb360a48ee6c64ea3507caf878e2 (patch)
tree02282bda7d9f120389b5ea1341007d3617a4103f /src/qml/jsruntime/qv4managed.cpp
parent4690cc0cd3afa3bb0361da2b01834762b6c69646 (diff)
Move vtable out of internalClass
We can move the internalClass to Object later on, and such save having the internalClass on lots of Heap objects. This commit basically adds and starts making use of a new vtable pointer in Heap::Base. In addition, the construction methods in the memory manager now automatically setup the correct vtable. Removing the vtable code from InternalClass and moving it into Object will come in a separate commit Change-Id: If49e8d73c769bf65bf47fe4dbf8b9546c8019dbc Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/jsruntime/qv4managed.cpp')
-rw-r--r--src/qml/jsruntime/qv4managed.cpp11
1 files changed, 3 insertions, 8 deletions
diff --git a/src/qml/jsruntime/qv4managed.cpp b/src/qml/jsruntime/qv4managed.cpp
index 668e7d296d..f784f4a781 100644
--- a/src/qml/jsruntime/qv4managed.cpp
+++ b/src/qml/jsruntime/qv4managed.cpp
@@ -56,13 +56,6 @@ const ManagedVTable Managed::static_vtbl =
};
-void *Managed::operator new(size_t size, MemoryManager *mm)
-{
- assert(mm);
-
- return mm->allocManaged(size);
-}
-
ExecutionEngine *Managed::engine() const
{
return internalClass()->engine;
@@ -71,7 +64,7 @@ ExecutionEngine *Managed::engine() const
QString Managed::className() const
{
const char *s = 0;
- switch (Type(internalClass()->vtable->type)) {
+ switch (Type(d()->vtable->type)) {
case Type_Invalid:
case Type_String:
return QString();
@@ -153,12 +146,14 @@ QString Managed::className() const
void Managed::setVTable(const ManagedVTable *vt)
{
+ d()->vtable = vt;
Q_ASSERT(internalClass());
d()->internalClass = internalClass()->changeVTable(vt);
}
void Heap::Base::setVTable(const ManagedVTable *vt)
{
+ vtable = vt;
Q_ASSERT(internalClass);
internalClass = internalClass->changeVTable(vt);
}