@@ -81,9 +81,9 @@ class CodedBufferWriter {
8181
8282 if (fieldType.isMap) {
8383 final keyWireFormat =
84- _wireTypes[ _valueTypeIndex ( fieldValue.keyFieldType) ];
84+ _baseTypeToWireType[ fieldValue.keyFieldType.baseType.index ];
8585 final valueWireFormat =
86- _wireTypes[ _valueTypeIndex ( fieldValue.valueFieldType) ];
86+ _baseTypeToWireType[ fieldValue.valueFieldType.baseType.index ];
8787
8888 fieldValue.forEach ((key, value) {
8989 _writeTag (fieldNumber, WIRETYPE_LENGTH_DELIMITED );
@@ -436,65 +436,6 @@ class CodedBufferWriter {
436436 }
437437 }
438438
439- /// This function maps a power-of-2 value (2^0 .. 2^31) to a unique value
440- /// in the 0..31 range.
441- ///
442- /// For more details see "Using de Bruijn Sequences to Index a 1 in
443- /// a Computer Word"[1]
444- ///
445- /// Note: this is guaranteed to work after compilation to JavaScript
446- /// where multiplication becomes a floating point multiplication.
447- ///
448- /// [1] http://supertech.csail.mit.edu/papers/debruijn.pdf
449- int _valueTypeIndex (int powerOf2) {
450- assert (powerOf2 & (powerOf2 - 1 ) == 0 , '$powerOf2 is not a power of 2' );
451- return ((0x077CB531 * powerOf2) >> 27 ) & 31 ;
452- }
453-
454- /// Precomputed indices for all FbFieldType._XYZ_BIT values:
455- ///
456- /// _XYZ_BIT_INDEX = _valueTypeIndex(FbFieldType._XYZ_BIT)
457- ///
458- static const _BOOL_BIT_INDEX = 14 ;
459- static const _BYTES_BIT_INDEX = 29 ;
460- static const _STRING_BIT_INDEX = 27 ;
461- static const _DOUBLE_BIT_INDEX = 23 ;
462- static const _FLOAT_BIT_INDEX = 15 ;
463- static const _ENUM_BIT_INDEX = 31 ;
464- static const _GROUP_BIT_INDEX = 30 ;
465- static const _INT32_BIT_INDEX = 28 ;
466- static const _INT64_BIT_INDEX = 25 ;
467- static const _SINT32_BIT_INDEX = 18 ;
468- static const _SINT64_BIT_INDEX = 5 ;
469- static const _UINT32_BIT_INDEX = 11 ;
470- static const _UINT64_BIT_INDEX = 22 ;
471- static const _FIXED32_BIT_INDEX = 13 ;
472- static const _FIXED64_BIT_INDEX = 26 ;
473- static const _SFIXED32_BIT_INDEX = 21 ;
474- static const _SFIXED64_BIT_INDEX = 10 ;
475- static const _MESSAGE_BIT_INDEX = 20 ;
476-
477- /// Mapping from value types to wire-types indexed by _valueTypeIndex(...).
478- static final Uint8List _wireTypes = Uint8List (32 )
479- ..[_BOOL_BIT_INDEX ] = WIRETYPE_VARINT
480- ..[_BYTES_BIT_INDEX ] = WIRETYPE_LENGTH_DELIMITED
481- ..[_STRING_BIT_INDEX ] = WIRETYPE_LENGTH_DELIMITED
482- ..[_DOUBLE_BIT_INDEX ] = WIRETYPE_FIXED64
483- ..[_FLOAT_BIT_INDEX ] = WIRETYPE_FIXED32
484- ..[_ENUM_BIT_INDEX ] = WIRETYPE_VARINT
485- ..[_GROUP_BIT_INDEX ] = WIRETYPE_START_GROUP
486- ..[_INT32_BIT_INDEX ] = WIRETYPE_VARINT
487- ..[_INT64_BIT_INDEX ] = WIRETYPE_VARINT
488- ..[_SINT32_BIT_INDEX ] = WIRETYPE_VARINT
489- ..[_SINT64_BIT_INDEX ] = WIRETYPE_VARINT
490- ..[_UINT32_BIT_INDEX ] = WIRETYPE_VARINT
491- ..[_UINT64_BIT_INDEX ] = WIRETYPE_VARINT
492- ..[_FIXED32_BIT_INDEX ] = WIRETYPE_FIXED32
493- ..[_FIXED64_BIT_INDEX ] = WIRETYPE_FIXED64
494- ..[_SFIXED32_BIT_INDEX ] = WIRETYPE_FIXED32
495- ..[_SFIXED64_BIT_INDEX ] = WIRETYPE_FIXED64
496- ..[_MESSAGE_BIT_INDEX ] = WIRETYPE_LENGTH_DELIMITED ;
497-
498439 static final List <int > _baseTypeToWireType = [
499440 WIRETYPE_VARINT , // 0: bool
500441 WIRETYPE_LENGTH_DELIMITED , // 1: bytes
0 commit comments