From 81943c702ef818003d06c7bccaece2ed23f6079c Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Wed, 4 May 2022 11:32:51 +0200 Subject: QML: Port QV4::CompiledData::JSClassMember to new special integer bitfield Task-number: QTBUG-99545 Change-Id: I0a7d86450011f1664d61db4d78317dafbcfbb8cf Reviewed-by: Fabian Kosmale Reviewed-by: Sami Shalayel (cherry picked from commit b5a8a6943ab979e23db284780df9209af5ae03a8) Reviewed-by: Qt Cherry-pick Bot --- src/qml/common/qv4compileddata_p.h | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'src/qml/common') diff --git a/src/qml/common/qv4compileddata_p.h b/src/qml/common/qv4compileddata_p.h index b819681247..7d57d5deff 100644 --- a/src/qml/common/qv4compileddata_p.h +++ b/src/qml/common/qv4compileddata_p.h @@ -199,13 +199,21 @@ static_assert(sizeof(Lookup) == 4, "Lookup structure needs to have the expected struct JSClassMember { - union { - quint32 _dummy; - quint32_le_bitfield<0, 31> nameOffset; - quint32_le_bitfield<31, 1> isAccessor; - }; + JSClassMember() : m_data(QSpecialIntegerBitfieldZero) {} + + void set(quint32 nameOffset, bool isAccessor) + { + m_data.set(nameOffset); + m_data.set(isAccessor ? 1 : 0); + } - JSClassMember() : _dummy(0) { } + quint32 nameOffset() const { return m_data.get(); } + bool isAccessor() const { return m_data.get() != 0; } + +private: + using NameOffsetField = quint32_le_bitfield_member<0, 31>; + using IsAccessorField = quint32_le_bitfield_member<31, 1>; + quint32_le_bitfield_union m_data; }; static_assert(sizeof(JSClassMember) == 4, "JSClassMember structure needs to have the expected size to be binary compatible on disk when generated by host compiler and loaded by target"); -- cgit v1.2.3