@@ -118,8 +118,11 @@ namespace {
118
118
if (key.getKind () == DeclBaseName::Kind::Normal) {
119
119
keyLength += key.getIdentifier ().str ().size (); // The name's length
120
120
}
121
+ assert (keyLength == static_cast <uint16_t >(keyLength));
121
122
122
123
uint32_t dataLength = (sizeof (uint32_t ) + 1 ) * data.size ();
124
+ assert (dataLength == static_cast <uint16_t >(dataLength));
125
+
123
126
endian::Writer<little> writer (out);
124
127
writer.write <uint16_t >(keyLength);
125
128
writer.write <uint16_t >(dataLength);
@@ -195,12 +198,14 @@ namespace {
195
198
key_type_ref key,
196
199
data_type_ref data) {
197
200
uint32_t keyLength = key.str ().size ();
201
+ assert (keyLength == static_cast <uint16_t >(keyLength));
198
202
uint32_t dataLength = (sizeof (uint32_t ) * 2 ) * data.size ();
199
203
for (auto dataPair : data) {
200
204
int32_t nameData = getNameDataForBase (dataPair.first );
201
205
if (nameData > 0 )
202
206
dataLength += nameData;
203
207
}
208
+ assert (dataLength == static_cast <uint16_t >(dataLength));
204
209
endian::Writer<little> writer (out);
205
210
writer.write <uint16_t >(keyLength);
206
211
writer.write <uint16_t >(dataLength);
@@ -242,9 +247,11 @@ namespace {
242
247
key_type_ref key,
243
248
data_type_ref data) {
244
249
uint32_t keyLength = key.size ();
250
+ assert (keyLength == static_cast <uint16_t >(keyLength));
245
251
uint32_t dataLength = sizeof (uint32_t );
246
252
endian::Writer<little> writer (out);
247
253
writer.write <uint16_t >(keyLength);
254
+ // No need to write the data length; it's constant.
248
255
return { keyLength, dataLength };
249
256
}
250
257
@@ -281,7 +288,9 @@ namespace {
281
288
key_type_ref key,
282
289
data_type_ref data) {
283
290
uint32_t keyLength = key.str ().size ();
291
+ assert (keyLength == static_cast <uint16_t >(keyLength));
284
292
uint32_t dataLength = (sizeof (uint32_t ) * 2 ) * data.size ();
293
+ assert (dataLength == static_cast <uint16_t >(dataLength));
285
294
endian::Writer<little> writer (out);
286
295
writer.write <uint16_t >(keyLength);
287
296
writer.write <uint16_t >(dataLength);
@@ -334,6 +343,7 @@ namespace {
334
343
if (key.getKind () == DeclBaseName::Kind::Normal) {
335
344
keyLength += key.getIdentifier ().str ().size (); // The name's length
336
345
}
346
+ assert (keyLength == static_cast <uint16_t >(keyLength));
337
347
uint32_t dataLength = sizeof (uint32_t );
338
348
endian::Writer<little> writer (out);
339
349
writer.write <uint16_t >(keyLength);
@@ -387,12 +397,11 @@ namespace {
387
397
// This will trap if a single ValueDecl has more than 16383 members
388
398
// with the same DeclBaseName. Seems highly unlikely.
389
399
assert ((data.size () < (1 << 14 )) && " Too many members" );
390
- uint32_t keyLength = sizeof (uint32_t ); // key DeclID
391
400
uint32_t dataLength = sizeof (uint32_t ) * data.size (); // value DeclIDs
392
401
endian::Writer<little> writer (out);
393
- writer. write < uint16_t >(keyLength);
402
+ // No need to write the key length; it's constant.
394
403
writer.write <uint16_t >(dataLength);
395
- return { keyLength , dataLength };
404
+ return { sizeof ( uint32_t ) , dataLength };
396
405
}
397
406
398
407
void EmitKey (raw_ostream &out, key_type_ref key, unsigned len) {
0 commit comments