diff options
author | Lars Knoll <[email protected]> | 2017-12-01 09:07:34 +0100 |
---|---|---|
committer | Lars Knoll <[email protected]> | 2018-05-03 20:05:09 +0000 |
commit | 7e6485a046fde121f0e6fdf954162354939ff1d8 (patch) | |
tree | 6eb3d377de1080211850486fcac6d8c2b6ddf4ff | |
parent | 02b20c37ed544e6226f4d4d377bc272852e06357 (diff) |
Don't use bitfields for VTable flags
Accessing those is significantly slower than using a byte for each flag.
As they are performance critical, let's rather use some more bytes in
the vtable.
Change-Id: I7104d3b791f469fe5d6705f20db0c965878126e2
Reviewed-by: Simon Hausmann <[email protected]>
-rw-r--r-- | src/qml/jsruntime/qv4arraydata.cpp | 2 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4managed.cpp | 2 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4managed_p.h | 2 | ||||
-rw-r--r-- | src/qml/memory/qv4heap_p.h | 22 |
4 files changed, 14 insertions, 14 deletions
diff --git a/src/qml/jsruntime/qv4arraydata.cpp b/src/qml/jsruntime/qv4arraydata.cpp index 1285dcdae1..02e9d682db 100644 --- a/src/qml/jsruntime/qv4arraydata.cpp +++ b/src/qml/jsruntime/qv4arraydata.cpp @@ -60,8 +60,8 @@ const QV4::VTable QV4::ArrayData::static_vtbl = { QV4::ArrayData::IsErrorObject, QV4::ArrayData::IsArrayData, QV4::ArrayData::IsStringOrSymbol, - 0, QV4::ArrayData::MyType, + { 0, 0, 0, 0 }, "ArrayData", Q_VTABLE_FUNCTION(QV4::ArrayData, destroy), ArrayData::Data::markObjects, diff --git a/src/qml/jsruntime/qv4managed.cpp b/src/qml/jsruntime/qv4managed.cpp index bce504a4c6..92c5a1a069 100644 --- a/src/qml/jsruntime/qv4managed.cpp +++ b/src/qml/jsruntime/qv4managed.cpp @@ -56,8 +56,8 @@ const VTable Managed::static_vtbl = Managed::IsErrorObject, Managed::IsArrayData, Managed::IsStringOrSymbol, - 0, Managed::MyType, + { 0, 0, 0, 0 }, "Managed", nullptr, nullptr /*markObjects*/, diff --git a/src/qml/jsruntime/qv4managed_p.h b/src/qml/jsruntime/qv4managed_p.h index 32688d1b71..b60602b34c 100644 --- a/src/qml/jsruntime/qv4managed_p.h +++ b/src/qml/jsruntime/qv4managed_p.h @@ -141,8 +141,8 @@ inline void qYouForgotTheQ_MANAGED_Macro(T1, T2) {} classname::IsErrorObject, \ classname::IsArrayData, \ classname::IsStringOrSymbol, \ - 0, \ classname::MyType, \ + { 0, 0, 0, 0 }, \ #classname, \ Q_VTABLE_FUNCTION(classname, destroy), \ classname::Data::markObjects, \ diff --git a/src/qml/memory/qv4heap_p.h b/src/qml/memory/qv4heap_p.h index 316b89b829..84208b51e0 100644 --- a/src/qml/memory/qv4heap_p.h +++ b/src/qml/memory/qv4heap_p.h @@ -67,17 +67,17 @@ namespace QV4 { struct VTable { const VTable * const parent; - uint inlinePropertyOffset : 16; - uint nInlineProperties : 16; - uint isExecutionContext : 1; - uint isString : 1; - uint isObject : 1; - uint isFunctionObject : 1; - uint isErrorObject : 1; - uint isArrayData : 1; - uint isStringOrSymbol : 1; - uint unused : 17; - uint type : 8; + quint32 inlinePropertyOffset : 16; + quint32 nInlineProperties : 16; + quint8 isExecutionContext; + quint8 isString; + quint8 isObject; + quint8 isFunctionObject; + quint8 isErrorObject; + quint8 isArrayData; + quint8 isStringOrSymbol; + quint8 type; + quint8 unused[4]; const char *className; void (*destroy)(Heap::Base *); void (*markObjects)(Heap::Base *, MarkStack *markStack); |