Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qmldebug/qqmlprofilerevent.cpp |
Switch to Source code | Preprocessed file |
Line | Source | Count | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | - | |||||||||||||
2 | - | |||||||||||||
3 | - | |||||||||||||
4 | bool operator==(const QQmlProfilerEvent &event1, const QQmlProfilerEvent &event2) | - | ||||||||||||
5 | { | - | ||||||||||||
6 | if (event1.timestamp() != event2.timestamp()
| 0 | ||||||||||||
7 | return never executed: false;return false; never executed: return false; | 0 | ||||||||||||
8 | - | |||||||||||||
9 | - | |||||||||||||
10 | return never executed: event1.numbers<QVarLengthArray<qint64>>() == event2.numbers<QVarLengthArray<qint64>>();return event1.numbers<QVarLengthArray<qint64>>() == event2.numbers<QVarLengthArray<qint64>>(); never executed: return event1.numbers<QVarLengthArray<qint64>>() == event2.numbers<QVarLengthArray<qint64>>(); | 0 | ||||||||||||
11 | } | - | ||||||||||||
12 | - | |||||||||||||
13 | bool operator!=(const QQmlProfilerEvent &event1, const QQmlProfilerEvent &event2) | - | ||||||||||||
14 | { | - | ||||||||||||
15 | return never executed: !(event1 == event2);return !(event1 == event2); never executed: return !(event1 == event2); | 0 | ||||||||||||
16 | } | - | ||||||||||||
17 | - | |||||||||||||
18 | enum SerializationType { | - | ||||||||||||
19 | OneByte = 0, | - | ||||||||||||
20 | TwoByte = 1, | - | ||||||||||||
21 | FourByte = 2, | - | ||||||||||||
22 | EightByte = 3, | - | ||||||||||||
23 | TypeMask = 0x3 | - | ||||||||||||
24 | }; | - | ||||||||||||
25 | - | |||||||||||||
26 | enum SerializationTypeOffset { | - | ||||||||||||
27 | TimestampOffset = 0, | - | ||||||||||||
28 | TypeIndexOffset = 2, | - | ||||||||||||
29 | DataLengthOffset = 4, | - | ||||||||||||
30 | DataOffset = 6 | - | ||||||||||||
31 | }; | - | ||||||||||||
32 | - | |||||||||||||
33 | template<typename Number> | - | ||||||||||||
34 | static inline void readNumbers(QDataStream &stream, Number *data, quint16 length) | - | ||||||||||||
35 | { | - | ||||||||||||
36 | for (quint16 i = 0; i != length
| 0 | ||||||||||||
37 | stream >> data[i]; never executed: stream >> data[i]; | 0 | ||||||||||||
38 | } never executed: end of block | 0 | ||||||||||||
39 | - | |||||||||||||
40 | template<typename Number> | - | ||||||||||||
41 | static inline Number readNumber(QDataStream &stream, qint8 type) | - | ||||||||||||
42 | { | - | ||||||||||||
43 | switch (type) { | - | ||||||||||||
44 | case never executed: OneByte:case OneByte: never executed: {case OneByte: | 0 | ||||||||||||
45 | qint8 value; | - | ||||||||||||
46 | stream >> value; | - | ||||||||||||
47 | return never executed: static_cast<Number>(value);return static_cast<Number>(value); never executed: return static_cast<Number>(value); | 0 | ||||||||||||
48 | } | - | ||||||||||||
49 | case never executed: TwoByte:case TwoByte: never executed: {case TwoByte: | 0 | ||||||||||||
50 | qint16 value; | - | ||||||||||||
51 | stream >> value; | - | ||||||||||||
52 | return never executed: static_cast<Number>(value);return static_cast<Number>(value); never executed: return static_cast<Number>(value); | 0 | ||||||||||||
53 | } | - | ||||||||||||
54 | case never executed: FourByte:case FourByte: never executed: {case FourByte: | 0 | ||||||||||||
55 | qint32 value; | - | ||||||||||||
56 | stream >> value; | - | ||||||||||||
57 | return never executed: static_cast<Number>(value);return static_cast<Number>(value); never executed: return static_cast<Number>(value); | 0 | ||||||||||||
58 | } | - | ||||||||||||
59 | case never executed: EightByte:case EightByte: never executed: {case EightByte: | 0 | ||||||||||||
60 | qint64 value; | - | ||||||||||||
61 | stream >> value; | - | ||||||||||||
62 | return never executed: static_cast<Number>(value);return static_cast<Number>(value); never executed: return static_cast<Number>(value); | 0 | ||||||||||||
63 | } | - | ||||||||||||
64 | default never executed: :default: never executed: default: | 0 | ||||||||||||
65 | do { ((false) ? static_cast<void>(0) : qt_assert_x("Q_UNREACHABLE()", "Q_UNREACHABLE was reached", __FILE__, 106)); __builtin_unreachable(); } while (false); | - | ||||||||||||
66 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
67 | } | - | ||||||||||||
68 | } | - | ||||||||||||
69 | - | |||||||||||||
70 | QDataStream &operator>>(QDataStream &stream, QQmlProfilerEvent &event) | - | ||||||||||||
71 | { | - | ||||||||||||
72 | qint8 type; | - | ||||||||||||
73 | stream >> type; | - | ||||||||||||
74 | - | |||||||||||||
75 | event.m_timestamp = readNumber<qint64>(stream, (type >> TimestampOffset) & TypeMask); | - | ||||||||||||
76 | event.m_typeIndex = readNumber<qint32>(stream, (type >> TypeIndexOffset) & TypeMask); | - | ||||||||||||
77 | event.m_dataLength = readNumber<quint16>(stream, (type >> DataLengthOffset) & TypeMask); | - | ||||||||||||
78 | - | |||||||||||||
79 | uint bytesPerNumber = 1 << ((type >> DataOffset) & TypeMask); | - | ||||||||||||
80 | - | |||||||||||||
81 | if (event.m_dataLength * bytesPerNumber > sizeof(event.m_data)
| 0 | ||||||||||||
82 | event.m_dataType = static_cast<QQmlProfilerEvent::Type>((bytesPerNumber * 8) | - | ||||||||||||
83 | | QQmlProfilerEvent::External); | - | ||||||||||||
84 | event.m_data.external = malloc(event.m_dataLength * bytesPerNumber); | - | ||||||||||||
85 | } never executed: else {end of block | 0 | ||||||||||||
86 | event.m_dataType = static_cast<QQmlProfilerEvent::Type>(bytesPerNumber * 8); | - | ||||||||||||
87 | } never executed: end of block | 0 | ||||||||||||
88 | - | |||||||||||||
89 | switch (event.m_dataType) { | - | ||||||||||||
90 | case never executed: QQmlProfilerEvent::Inline8Bit:case QQmlProfilerEvent::Inline8Bit: never executed: case QQmlProfilerEvent::Inline8Bit: | 0 | ||||||||||||
91 | readNumbers<qint8>(stream, event.m_data.internal8bit, event.m_dataLength); | - | ||||||||||||
92 | break; never executed: break; | 0 | ||||||||||||
93 | case never executed: QQmlProfilerEvent::External8Bit:case QQmlProfilerEvent::External8Bit: never executed: case QQmlProfilerEvent::External8Bit: | 0 | ||||||||||||
94 | readNumbers<qint8>(stream, static_cast<qint8 *>(event.m_data.external), | - | ||||||||||||
95 | event.m_dataLength); | - | ||||||||||||
96 | break; never executed: break; | 0 | ||||||||||||
97 | case never executed: QQmlProfilerEvent::Inline16Bit:case QQmlProfilerEvent::Inline16Bit: never executed: case QQmlProfilerEvent::Inline16Bit: | 0 | ||||||||||||
98 | readNumbers<qint16>(stream, event.m_data.internal16bit, event.m_dataLength); | - | ||||||||||||
99 | break; never executed: break; | 0 | ||||||||||||
100 | case never executed: QQmlProfilerEvent::External16Bit:case QQmlProfilerEvent::External16Bit: never executed: case QQmlProfilerEvent::External16Bit: | 0 | ||||||||||||
101 | readNumbers<qint16>(stream, static_cast<qint16 *>(event.m_data.external), | - | ||||||||||||
102 | event.m_dataLength); | - | ||||||||||||
103 | break; never executed: break; | 0 | ||||||||||||
104 | case never executed: QQmlProfilerEvent::Inline32Bit:case QQmlProfilerEvent::Inline32Bit: never executed: case QQmlProfilerEvent::Inline32Bit: | 0 | ||||||||||||
105 | readNumbers<qint32>(stream, event.m_data.internal32bit, event.m_dataLength); | - | ||||||||||||
106 | break; never executed: break; | 0 | ||||||||||||
107 | case never executed: QQmlProfilerEvent::External32Bit:case QQmlProfilerEvent::External32Bit: never executed: case QQmlProfilerEvent::External32Bit: | 0 | ||||||||||||
108 | readNumbers<qint32>(stream, static_cast<qint32 *>(event.m_data.external), | - | ||||||||||||
109 | event.m_dataLength); | - | ||||||||||||
110 | break; never executed: break; | 0 | ||||||||||||
111 | case never executed: QQmlProfilerEvent::Inline64Bit:case QQmlProfilerEvent::Inline64Bit: never executed: case QQmlProfilerEvent::Inline64Bit: | 0 | ||||||||||||
112 | readNumbers<qint64>(stream, event.m_data.internal64bit, event.m_dataLength); | - | ||||||||||||
113 | break; never executed: break; | 0 | ||||||||||||
114 | case never executed: QQmlProfilerEvent::External64Bit:case QQmlProfilerEvent::External64Bit: never executed: case QQmlProfilerEvent::External64Bit: | 0 | ||||||||||||
115 | readNumbers<qint64>(stream, static_cast<qint64 *>(event.m_data.external), | - | ||||||||||||
116 | event.m_dataLength); | - | ||||||||||||
117 | break; never executed: break; | 0 | ||||||||||||
118 | default never executed: :default: never executed: default: | 0 | ||||||||||||
119 | do { ((false) ? static_cast<void>(0) : qt_assert_x("Q_UNREACHABLE()", "Q_UNREACHABLE was reached", __FILE__, 160)); __builtin_unreachable(); } while (false); | - | ||||||||||||
120 | break; never executed: break; | 0 | ||||||||||||
121 | } | - | ||||||||||||
122 | - | |||||||||||||
123 | return never executed: stream;return stream; never executed: return stream; | 0 | ||||||||||||
124 | } | - | ||||||||||||
125 | - | |||||||||||||
126 | static inline qint8 minimumType(const QQmlProfilerEvent &event, quint16 length, | - | ||||||||||||
127 | quint16 origBitsPerNumber) | - | ||||||||||||
128 | { | - | ||||||||||||
129 | qint8 type = OneByte; | - | ||||||||||||
130 | bool ok = true; | - | ||||||||||||
131 | for (quint16 i = 0; i < length
| 0 | ||||||||||||
132 | if ((
| 0 | ||||||||||||
133 | return never executed: type;return type; never executed: return type; | 0 | ||||||||||||
134 | switch (type) { | - | ||||||||||||
135 | case never executed: OneByte:case OneByte: never executed: case OneByte: | 0 | ||||||||||||
136 | ok = (event.number<qint8>(i) == event.number<qint64>(i)); | - | ||||||||||||
137 | break; never executed: break; | 0 | ||||||||||||
138 | case never executed: TwoByte:case TwoByte: never executed: case TwoByte: | 0 | ||||||||||||
139 | ok = (event.number<qint16>(i) == event.number<qint64>(i)); | - | ||||||||||||
140 | break; never executed: break; | 0 | ||||||||||||
141 | case never executed: FourByte:case FourByte: never executed: case FourByte: | 0 | ||||||||||||
142 | ok = (event.number<qint32>(i) == event.number<qint64>(i)); | - | ||||||||||||
143 | break; never executed: break; | 0 | ||||||||||||
144 | default never executed: :default: never executed: default: | 0 | ||||||||||||
145 | - | |||||||||||||
146 | do { ((false) ? static_cast<void>(0) : qt_assert_x("Q_UNREACHABLE()", "Q_UNREACHABLE was reached", __FILE__, 187)); __builtin_unreachable(); } while (false); | - | ||||||||||||
147 | break; never executed: break; | 0 | ||||||||||||
148 | } | - | ||||||||||||
149 | - | |||||||||||||
150 | if (ok
| 0 | ||||||||||||
151 | ++ never executed: i;++i; never executed: ++i; | 0 | ||||||||||||
152 | else | - | ||||||||||||
153 | ++ never executed: type;++type; never executed: ++type; | 0 | ||||||||||||
154 | } | - | ||||||||||||
155 | return never executed: type;return type; never executed: return type; | 0 | ||||||||||||
156 | } | - | ||||||||||||
157 | - | |||||||||||||
158 | template<typename Number> | - | ||||||||||||
159 | static inline qint8 minimumType(Number number) | - | ||||||||||||
160 | { | - | ||||||||||||
161 | if (static_cast<
| 0 | ||||||||||||
162 | return never executed: OneByte;return OneByte; never executed: return OneByte; | 0 | ||||||||||||
163 | if (static_cast<
| 0 | ||||||||||||
164 | return never executed: TwoByte;return TwoByte; never executed: return TwoByte; | 0 | ||||||||||||
165 | if (static_cast<
| 0 | ||||||||||||
166 | return never executed: FourByte;return FourByte; never executed: return FourByte; | 0 | ||||||||||||
167 | return never executed: EightByte;return EightByte; never executed: return EightByte; | 0 | ||||||||||||
168 | } | - | ||||||||||||
169 | - | |||||||||||||
170 | template<typename Number> | - | ||||||||||||
171 | static inline void writeNumbers(QDataStream &stream, const QQmlProfilerEvent &event, quint16 length) | - | ||||||||||||
172 | { | - | ||||||||||||
173 | for (quint16 i = 0; i != length
| 0 | ||||||||||||
174 | stream << event.number<Number>(i); never executed: stream << event.number<Number>(i); | 0 | ||||||||||||
175 | } never executed: end of block | 0 | ||||||||||||
176 | - | |||||||||||||
177 | template<typename Number> | - | ||||||||||||
178 | static inline void writeNumber(QDataStream &stream, Number number, qint8 type) | - | ||||||||||||
179 | { | - | ||||||||||||
180 | switch (type) { | - | ||||||||||||
181 | case never executed: OneByte:case OneByte: never executed: case OneByte: | 0 | ||||||||||||
182 | stream << static_cast<qint8>(number); | - | ||||||||||||
183 | break; never executed: break; | 0 | ||||||||||||
184 | case never executed: TwoByte:case TwoByte: never executed: case TwoByte: | 0 | ||||||||||||
185 | stream << static_cast<qint16>(number); | - | ||||||||||||
186 | break; never executed: break; | 0 | ||||||||||||
187 | case never executed: FourByte:case FourByte: never executed: case FourByte: | 0 | ||||||||||||
188 | stream << static_cast<qint32>(number); | - | ||||||||||||
189 | break; never executed: break; | 0 | ||||||||||||
190 | case never executed: EightByte:case EightByte: never executed: case EightByte: | 0 | ||||||||||||
191 | stream << static_cast<qint64>(number); | - | ||||||||||||
192 | break; never executed: break; | 0 | ||||||||||||
193 | default never executed: :default: never executed: default: | 0 | ||||||||||||
194 | do { ((false) ? static_cast<void>(0) : qt_assert_x("Q_UNREACHABLE()", "Q_UNREACHABLE was reached", __FILE__, 235)); __builtin_unreachable(); } while (false); | - | ||||||||||||
195 | break; never executed: break; | 0 | ||||||||||||
196 | } | - | ||||||||||||
197 | } | - | ||||||||||||
198 | - | |||||||||||||
199 | QDataStream &operator<<(QDataStream &stream, const QQmlProfilerEvent &event) | - | ||||||||||||
200 | { | - | ||||||||||||
201 | qint8 type = minimumType(event.m_timestamp); | - | ||||||||||||
202 | type |= minimumType(event.m_typeIndex) << TypeIndexOffset; | - | ||||||||||||
203 | type |= minimumType(event.m_dataLength) << DataLengthOffset; | - | ||||||||||||
204 | type |= minimumType(event, event.m_dataLength, event.m_dataType) << DataOffset; | - | ||||||||||||
205 | stream << type; | - | ||||||||||||
206 | - | |||||||||||||
207 | writeNumber(stream, event.m_timestamp, (type >> TimestampOffset) & TypeMask); | - | ||||||||||||
208 | writeNumber(stream, event.m_typeIndex, (type >> TypeIndexOffset) & TypeMask); | - | ||||||||||||
209 | writeNumber(stream, event.m_dataLength, (type >> DataLengthOffset) & TypeMask); | - | ||||||||||||
210 | - | |||||||||||||
211 | switch ((type >> DataOffset) & TypeMask) { | - | ||||||||||||
212 | case never executed: OneByte:case OneByte: never executed: case OneByte: | 0 | ||||||||||||
213 | writeNumbers<qint8>(stream, event, event.m_dataLength); | - | ||||||||||||
214 | break; never executed: break; | 0 | ||||||||||||
215 | case never executed: TwoByte:case TwoByte: never executed: case TwoByte: | 0 | ||||||||||||
216 | writeNumbers<qint16>(stream, event, event.m_dataLength); | - | ||||||||||||
217 | break; never executed: break; | 0 | ||||||||||||
218 | case never executed: FourByte:case FourByte: never executed: case FourByte: | 0 | ||||||||||||
219 | writeNumbers<qint32>(stream, event, event.m_dataLength); | - | ||||||||||||
220 | break; never executed: break; | 0 | ||||||||||||
221 | case never executed: EightByte:case EightByte: never executed: case EightByte: | 0 | ||||||||||||
222 | writeNumbers<qint64>(stream, event, event.m_dataLength); | - | ||||||||||||
223 | break; never executed: break; | 0 | ||||||||||||
224 | default never executed: :default: never executed: default: | 0 | ||||||||||||
225 | do { ((false) ? static_cast<void>(0) : qt_assert_x("Q_UNREACHABLE()", "Q_UNREACHABLE was reached", __FILE__, 266)); __builtin_unreachable(); } while (false); | - | ||||||||||||
226 | break; never executed: break; | 0 | ||||||||||||
227 | } | - | ||||||||||||
228 | - | |||||||||||||
229 | return never executed: stream;return stream; never executed: return stream; | 0 | ||||||||||||
230 | } | - | ||||||||||||
231 | - | |||||||||||||
232 | - | |||||||||||||
Switch to Source code | Preprocessed file |