diff options
author | Lars Knoll <lars.knoll@theqtcompany.com> | 2015-08-27 22:32:38 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@theqtcompany.com> | 2015-09-22 08:20:01 +0000 |
commit | d7e535e99babae46d01311059f5ef6080dc90751 (patch) | |
tree | a526cf8c87c4838554fd7768bfca106e585b61ac /src/qml/memory | |
parent | 9420eb5c4e55d68b996bb0120db1f2dfeeef3a8c (diff) |
Convert variant object and ObjectProto
Change-Id: I5ee3b453b74f5832997aca68d04979302f9afac5
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Diffstat (limited to 'src/qml/memory')
-rw-r--r-- | src/qml/memory/qv4mm_p.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/qml/memory/qv4mm_p.h b/src/qml/memory/qv4mm_p.h index 6b6b502b95..d2071766e8 100644 --- a/src/qml/memory/qv4mm_p.h +++ b/src/qml/memory/qv4mm_p.h @@ -102,6 +102,19 @@ public: } template <typename ObjectType> + typename ObjectType::Data *allocObject(InternalClass *ic) + { + Scope scope(engine()); + const int size = (sizeof(typename ObjectType::Data) + (sizeof(Value) - 1)) & ~(sizeof(Value) - 1); + Scoped<ObjectType> t(scope, allocManaged<ObjectType>(size + ic->size*sizeof(Value))); + t->d()->internalClass = ic; + t->d()->inlineMemberSize = ic->size; + t->d()->inlineMemberOffset = size/sizeof(Value); + (void)new (t->d()) typename ObjectType::Data(); + return t->d(); + } + + template <typename ObjectType> typename ObjectType::Data *allocObject(InternalClass *ic, Object *prototype) { Scope scope(engine()); |