diff options
author | Lars Knoll <lars.knoll@theqtcompany.com> | 2015-08-28 13:48:52 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@theqtcompany.com> | 2015-09-22 08:20:15 +0000 |
commit | bf8403d8d4c39efc02dc38b5d75194ff712192fe (patch) | |
tree | f9598283ac0600677494373180d365fe862efe89 /src/qml/memory/qv4mm_p.h | |
parent | 13edffa303c0a4514035857b4a61b2665ede7b2c (diff) |
Avoid a function call when allocation new objects
Change-Id: I5f30d4fc3901fcd77aba4e7601586aa34cc0f5d2
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Diffstat (limited to 'src/qml/memory/qv4mm_p.h')
-rw-r--r-- | src/qml/memory/qv4mm_p.h | 46 |
1 files changed, 22 insertions, 24 deletions
diff --git a/src/qml/memory/qv4mm_p.h b/src/qml/memory/qv4mm_p.h index 94abf491f3..c77d5e503d 100644 --- a/src/qml/memory/qv4mm_p.h +++ b/src/qml/memory/qv4mm_p.h @@ -106,10 +106,10 @@ public: template <typename ObjectType> typename ObjectType::Data *allocateObject() { - InternalClass *ic = ObjectType::defaultInternalClass(engine()); + InternalClass *ic = ObjectType::defaultInternalClass(engine); const int size = (sizeof(typename ObjectType::Data) + (sizeof(Value) - 1)) & ~(sizeof(Value) - 1); typename ObjectType::Data *o = allocManaged<ObjectType>(size + ic->size*sizeof(Value)); - Object *prototype = ObjectType::defaultPrototype(engine()); + Object *prototype = ObjectType::defaultPrototype(engine); o->internalClass = ic; o->prototype = prototype->d(); o->inlineMemberSize = ic->size; @@ -120,7 +120,7 @@ public: template <typename ManagedType, typename Arg1> typename ManagedType::Data *allocWithStringData(std::size_t unmanagedSize, Arg1 arg1) { - Scope scope(engine()); + Scope scope(engine); Scoped<ManagedType> t(scope, allocManaged<ManagedType>(sizeof(typename ManagedType::Data), unmanagedSize)); (void)new (t->d()) typename ManagedType::Data(this, arg1); return t->d(); @@ -129,7 +129,7 @@ public: template <typename ObjectType> typename ObjectType::Data *allocObject(InternalClass *ic) { - Scope scope(engine()); + Scope scope(engine); Scoped<ObjectType> t(scope, allocateObject<ObjectType>(ic)); (void)new (t->d()) typename ObjectType::Data(); return t->d(); @@ -138,7 +138,7 @@ public: template <typename ObjectType> typename ObjectType::Data *allocObject(InternalClass *ic, Object *prototype) { - Scope scope(engine()); + Scope scope(engine); Scoped<ObjectType> t(scope, allocateObject<ObjectType>(ic)); t->d()->prototype = prototype->d(); (void)new (t->d()) typename ObjectType::Data(); @@ -148,7 +148,7 @@ public: template <typename ObjectType, typename Arg1> typename ObjectType::Data *allocObject(InternalClass *ic, Object *prototype, Arg1 arg1) { - Scope scope(engine()); + Scope scope(engine); Scoped<ObjectType> t(scope, allocateObject<ObjectType>(ic)); t->d()->prototype = prototype->d(); (void)new (t->d()) typename ObjectType::Data(arg1); @@ -158,7 +158,7 @@ public: template <typename ObjectType, typename Arg1, typename Arg2> typename ObjectType::Data *allocObject(InternalClass *ic, Object *prototype, Arg1 arg1, Arg2 arg2) { - Scope scope(engine()); + Scope scope(engine); Scoped<ObjectType> t(scope, allocateObject<ObjectType>(ic)); t->d()->prototype = prototype->d(); (void)new (t->d()) typename ObjectType::Data(arg1, arg2); @@ -168,7 +168,7 @@ public: template <typename ObjectType, typename Arg1, typename Arg2, typename Arg3> typename ObjectType::Data *allocObject(InternalClass *ic, Object *prototype, Arg1 arg1, Arg2 arg2, Arg3 arg3) { - Scope scope(engine()); + Scope scope(engine); Scoped<ObjectType> t(scope, allocateObject<ObjectType>(ic)); t->d()->prototype = prototype->d(); (void)new (t->d()) typename ObjectType::Data(arg1, arg2, arg3); @@ -178,7 +178,7 @@ public: template <typename ObjectType, typename Arg1, typename Arg2, typename Arg3, typename Arg4> typename ObjectType::Data *allocObject(InternalClass *ic, Object *prototype, Arg1 arg1, Arg2 arg2, Arg3 arg3, Arg4 arg4) { - Scope scope(engine()); + Scope scope(engine); Scoped<ObjectType> t(scope, allocateObject<ObjectType>(ic)); t->d()->prototype = prototype->d(); (void)new (t->d()) typename ObjectType::Data(arg1, arg2, arg3, arg4); @@ -188,7 +188,7 @@ public: template <typename ObjectType> typename ObjectType::Data *allocObject() { - Scope scope(engine()); + Scope scope(engine); Scoped<ObjectType> t(scope, allocateObject<ObjectType>()); (void)new (t->d()) typename ObjectType::Data(); return t->d(); @@ -197,7 +197,7 @@ public: template <typename ObjectType, typename Arg1> typename ObjectType::Data *allocObject(Arg1 arg1) { - Scope scope(engine()); + Scope scope(engine); Scoped<ObjectType> t(scope, allocateObject<ObjectType>()); (void)new (t->d()) typename ObjectType::Data(arg1); return t->d(); @@ -206,7 +206,7 @@ public: template <typename ObjectType, typename Arg1, typename Arg2> typename ObjectType::Data *allocObject(Arg1 arg1, Arg2 arg2) { - Scope scope(engine()); + Scope scope(engine); Scoped<ObjectType> t(scope, allocateObject<ObjectType>()); (void)new (t->d()) typename ObjectType::Data(arg1, arg2); return t->d(); @@ -215,7 +215,7 @@ public: template <typename ObjectType, typename Arg1, typename Arg2, typename Arg3> typename ObjectType::Data *allocObject(Arg1 arg1, Arg2 arg2, Arg3 arg3) { - Scope scope(engine()); + Scope scope(engine); Scoped<ObjectType> t(scope, allocateObject<ObjectType>()); (void)new (t->d()) typename ObjectType::Data(arg1, arg2, arg3); return t->d(); @@ -224,7 +224,7 @@ public: template <typename ObjectType, typename Arg1, typename Arg2, typename Arg3, typename Arg4> typename ObjectType::Data *allocObject(Arg1 arg1, Arg2 arg2, Arg3 arg3, Arg4 arg4) { - Scope scope(engine()); + Scope scope(engine); Scoped<ObjectType> t(scope, allocateObject<ObjectType>()); (void)new (t->d()) typename ObjectType::Data(arg1, arg2, arg3, arg4); return t->d(); @@ -234,7 +234,7 @@ public: template <typename ManagedType> typename ManagedType::Data *alloc() { - Scope scope(engine()); + Scope scope(engine); Scoped<ManagedType> t(scope, allocManaged<ManagedType>(sizeof(typename ManagedType::Data))); (void)new (t->d()) typename ManagedType::Data(); return t->d(); @@ -243,7 +243,7 @@ public: template <typename ManagedType, typename Arg1> typename ManagedType::Data *alloc(Arg1 arg1) { - Scope scope(engine()); + Scope scope(engine); Scoped<ManagedType> t(scope, allocManaged<ManagedType>(sizeof(typename ManagedType::Data))); (void)new (t->d()) typename ManagedType::Data(arg1); return t->d(); @@ -252,7 +252,7 @@ public: template <typename ManagedType, typename Arg1, typename Arg2> typename ManagedType::Data *alloc(Arg1 arg1, Arg2 arg2) { - Scope scope(engine()); + Scope scope(engine); Scoped<ManagedType> t(scope, allocManaged<ManagedType>(sizeof(typename ManagedType::Data))); (void)new (t->d()) typename ManagedType::Data(arg1, arg2); return t->d(); @@ -261,7 +261,7 @@ public: template <typename ManagedType, typename Arg1, typename Arg2, typename Arg3> typename ManagedType::Data *alloc(Arg1 arg1, Arg2 arg2, Arg3 arg3) { - Scope scope(engine()); + Scope scope(engine); Scoped<ManagedType> t(scope, allocManaged<ManagedType>(sizeof(typename ManagedType::Data))); (void)new (t->d()) typename ManagedType::Data(arg1, arg2, arg3); return t->d(); @@ -270,7 +270,7 @@ public: template <typename ManagedType, typename Arg1, typename Arg2, typename Arg3, typename Arg4> typename ManagedType::Data *alloc(Arg1 arg1, Arg2 arg2, Arg3 arg3, Arg4 arg4) { - Scope scope(engine()); + Scope scope(engine); Scoped<ManagedType> t(scope, allocManaged<ManagedType>(sizeof(typename ManagedType::Data))); (void)new (t->d()) typename ManagedType::Data(arg1, arg2, arg3, arg4); return t->d(); @@ -279,7 +279,7 @@ public: template <typename ManagedType, typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5> typename ManagedType::Data *alloc(Arg1 arg1, Arg2 arg2, Arg3 arg3, Arg4 arg4, Arg5 arg5) { - Scope scope(engine()); + Scope scope(engine); Scoped<ManagedType> t(scope, allocManaged<ManagedType>(sizeof(typename ManagedType::Data))); (void)new (t->d()) typename ManagedType::Data(arg1, arg2, arg3, arg4, arg5); return t->d(); @@ -289,8 +289,6 @@ public: void setGCBlocked(bool blockGC); void runGC(); - ExecutionEngine *engine() const; - void dumpStats() const; size_t getUsedMem() const; @@ -313,9 +311,9 @@ private: void mark(); void sweep(bool lastSweep = false); -protected: - QScopedPointer<Data> m_d; public: + QV4::ExecutionEngine *engine; + QScopedPointer<Data> m_d; PersistentValueStorage *m_persistentValues; PersistentValueStorage *m_weakValues; }; |