diff options
author | Lars Knoll <lars.knoll@qt.io> | 2017-11-07 12:10:39 +0100 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2017-11-15 18:46:53 +0000 |
commit | 996e54602a05649e3a84a505b439742809172d6f (patch) | |
tree | d30e96682e97106e9df13bd2c920e67670e8e796 | |
parent | 1417f3878574978182b669147bc4aed6870f4838 (diff) |
Allow tuning the amount of inline properties per object type
Different JS objects need different amount of properties by
default. Tune the amount of inline properties we pre-allocate
by what's usually needed for the object.
Change-Id: I2703d123939f9b7e3a06531361cbb6a3a3c04944
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
-rw-r--r-- | src/qml/jsruntime/qv4functionobject_p.h | 2 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4managed_p.h | 3 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4object_p.h | 2 |
3 files changed, 6 insertions, 1 deletions
diff --git a/src/qml/jsruntime/qv4functionobject_p.h b/src/qml/jsruntime/qv4functionobject_p.h index 27024b3455..d61006a6b0 100644 --- a/src/qml/jsruntime/qv4functionobject_p.h +++ b/src/qml/jsruntime/qv4functionobject_p.h @@ -147,6 +147,7 @@ struct Q_QML_EXPORT FunctionObject: Object { V4_INTERNALCLASS(FunctionObject) V4_PROTOTYPE(functionPrototype) V4_NEEDS_DESTROY + enum { NInlineProperties = 1 }; Heap::ExecutionContext *scope() const { return d()->scope; } Function *function() const { return d()->function; } @@ -238,6 +239,7 @@ void Heap::IndexedBuiltinFunction::init(QV4::ExecutionContext *scope, uint index struct ScriptFunction : FunctionObject { V4_OBJECT2(ScriptFunction, FunctionObject) V4_INTERNALCLASS(ScriptFunction) + enum { NInlineProperties = 3 }; static ReturnedValue callAsConstructor(const FunctionObject *, const Value *argv, int argc); static ReturnedValue call(const FunctionObject *f, const Value *thisObject, const Value *argv, int argc); diff --git a/src/qml/jsruntime/qv4managed_p.h b/src/qml/jsruntime/qv4managed_p.h index ea10f6f6d1..f81dcf9479 100644 --- a/src/qml/jsruntime/qv4managed_p.h +++ b/src/qml/jsruntime/qv4managed_p.h @@ -132,7 +132,7 @@ inline void qYouForgotTheQ_MANAGED_Macro(T1, T2) {} { \ parentVTable, \ (sizeof(classname::Data) + sizeof(QV4::Value) - 1)/sizeof(QV4::Value), \ - (sizeof(classname::Data) + (std::is_same<classname, Object>::value ? 2*sizeof(QV4::Value) : 0) + QV4::Chunk::SlotSize - 1)/QV4::Chunk::SlotSize*QV4::Chunk::SlotSize/sizeof(QV4::Value) \ + (sizeof(classname::Data) + (classname::NInlineProperties*sizeof(QV4::Value)) + QV4::Chunk::SlotSize - 1)/QV4::Chunk::SlotSize*QV4::Chunk::SlotSize/sizeof(QV4::Value) \ - (sizeof(classname::Data) + sizeof(QV4::Value) - 1)/sizeof(QV4::Value), \ classname::IsExecutionContext, \ classname::IsString, \ @@ -174,6 +174,7 @@ private: Q_DISABLE_COPY(Managed) public: + enum { NInlineProperties = 0 }; enum Type { Type_Invalid, diff --git a/src/qml/jsruntime/qv4object_p.h b/src/qml/jsruntime/qv4object_p.h index e2512f48c7..ff3ad7c0c6 100644 --- a/src/qml/jsruntime/qv4object_p.h +++ b/src/qml/jsruntime/qv4object_p.h @@ -214,6 +214,8 @@ struct Q_QML_EXPORT Object: Managed { V4_INTERNALCLASS(Object) V4_PROTOTYPE(objectPrototype) + enum { NInlineProperties = 2 }; + enum { IsObject = true, GetterOffset = 0, |