| OLD | NEW | 
|---|
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. | 
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without | 
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are | 
| 4 // met: | 4 // met: | 
| 5 // | 5 // | 
| 6 //     * Redistributions of source code must retain the above copyright | 6 //     * Redistributions of source code must retain the above copyright | 
| 7 //       notice, this list of conditions and the following disclaimer. | 7 //       notice, this list of conditions and the following disclaimer. | 
| 8 //     * Redistributions in binary form must reproduce the above | 8 //     * Redistributions in binary form must reproduce the above | 
| 9 //       copyright notice, this list of conditions and the following | 9 //       copyright notice, this list of conditions and the following | 
| 10 //       disclaimer in the documentation and/or other materials provided | 10 //       disclaimer in the documentation and/or other materials provided | 
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 45 typedef signed short int16_t;  // NOLINT | 45 typedef signed short int16_t;  // NOLINT | 
| 46 typedef unsigned short uint16_t;  // NOLINT | 46 typedef unsigned short uint16_t;  // NOLINT | 
| 47 typedef int int32_t;  // NOLINT | 47 typedef int int32_t;  // NOLINT | 
| 48 | 48 | 
| 49 // All access to the character table should go through this function. | 49 // All access to the character table should go through this function. | 
| 50 template <int D> | 50 template <int D> | 
| 51 static inline uchar TableGet(const int32_t* table, int index) { | 51 static inline uchar TableGet(const int32_t* table, int index) { | 
| 52   return table[D * index]; | 52   return table[D * index]; | 
| 53 } | 53 } | 
| 54 | 54 | 
|  | 55 | 
| 55 static inline uchar GetEntry(int32_t entry) { | 56 static inline uchar GetEntry(int32_t entry) { | 
| 56   return entry & (kStartBit - 1); | 57   return entry & (kStartBit - 1); | 
| 57 } | 58 } | 
| 58 | 59 | 
|  | 60 | 
| 59 static inline bool IsStart(int32_t entry) { | 61 static inline bool IsStart(int32_t entry) { | 
| 60   return (entry & kStartBit) != 0; | 62   return (entry & kStartBit) != 0; | 
| 61 } | 63 } | 
| 62 | 64 | 
|  | 65 | 
| 63 /** | 66 /** | 
| 64  * Look up a character in the unicode table using a mix of binary and | 67  * Look up a character in the unicode table using a mix of binary and | 
| 65  * interpolation search.  For a uniformly distributed array | 68  * interpolation search.  For a uniformly distributed array | 
| 66  * interpolation search beats binary search by a wide margin.  However, | 69  * interpolation search beats binary search by a wide margin.  However, | 
| 67  * in this case interpolation search degenerates because of some very | 70  * in this case interpolation search degenerates because of some very | 
| 68  * high values in the lower end of the table so this function uses a | 71  * high values in the lower end of the table so this function uses a | 
| 69  * combination.  The average number of steps to look up the information | 72  * combination.  The average number of steps to look up the information | 
| 70  * about a character is around 10, slightly higher if there is no | 73  * about a character is around 10, slightly higher if there is no | 
| 71  * information available about the character. | 74  * information available about the character. | 
| 72  */ | 75  */ | 
| (...skipping 26 matching lines...) Expand all  Loading... | 
| 99   bool is_start = IsStart(field); | 102   bool is_start = IsStart(field); | 
| 100   return (entry == value) || (entry < value && is_start); | 103   return (entry == value) || (entry < value && is_start); | 
| 101 } | 104 } | 
| 102 | 105 | 
| 103 template <int kW> | 106 template <int kW> | 
| 104 struct MultiCharacterSpecialCase { | 107 struct MultiCharacterSpecialCase { | 
| 105   static const uchar kEndOfEncoding = kSentinel; | 108   static const uchar kEndOfEncoding = kSentinel; | 
| 106   uchar chars[kW]; | 109   uchar chars[kW]; | 
| 107 }; | 110 }; | 
| 108 | 111 | 
|  | 112 | 
| 109 // Look up the mapping for the given character in the specified table, | 113 // Look up the mapping for the given character in the specified table, | 
| 110 // which is of the specified length and uses the specified special case | 114 // which is of the specified length and uses the specified special case | 
| 111 // mapping for multi-char mappings.  The next parameter is the character | 115 // mapping for multi-char mappings.  The next parameter is the character | 
| 112 // following the one to map.  The result will be written in to the result | 116 // following the one to map.  The result will be written in to the result | 
| 113 // buffer and the number of characters written will be returned.  Finally, | 117 // buffer and the number of characters written will be returned.  Finally, | 
| 114 // if the allow_caching_ptr is non-null then false will be stored in | 118 // if the allow_caching_ptr is non-null then false will be stored in | 
| 115 // it if the result contains multiple characters or depends on the | 119 // it if the result contains multiple characters or depends on the | 
| 116 // context. | 120 // context. | 
| 117 // If ranges are linear, a match between a start and end point is | 121 // If ranges are linear, a match between a start and end point is | 
| 118 // offset by the distance between the match and the start. Otherwise | 122 // offset by the distance between the match and the start. Otherwise | 
| (...skipping 330 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 449     case 5: return LookupPredicate(kUppercaseTable5, | 453     case 5: return LookupPredicate(kUppercaseTable5, | 
| 450                                        kUppercaseTable5Size, | 454                                        kUppercaseTable5Size, | 
| 451                                        c); | 455                                        c); | 
| 452     case 7: return LookupPredicate(kUppercaseTable7, | 456     case 7: return LookupPredicate(kUppercaseTable7, | 
| 453                                        kUppercaseTable7Size, | 457                                        kUppercaseTable7Size, | 
| 454                                        c); | 458                                        c); | 
| 455     default: return false; | 459     default: return false; | 
| 456   } | 460   } | 
| 457 } | 461 } | 
| 458 | 462 | 
|  | 463 | 
| 459 // Lowercase:            point.category == 'Ll' | 464 // Lowercase:            point.category == 'Ll' | 
| 460 | 465 | 
| 461 static const uint16_t kLowercaseTable0Size = 463; | 466 static const uint16_t kLowercaseTable0Size = 463; | 
| 462 static const int32_t kLowercaseTable0[463] = { | 467 static const int32_t kLowercaseTable0[463] = { | 
| 463   1073741921, 122, 181, 1073742047, 246, 1073742072, 255, 257,  // NOLINT | 468   1073741921, 122, 181, 1073742047, 246, 1073742072, 255, 257,  // NOLINT | 
| 464   259, 261, 263, 265, 267, 269, 271, 273,  // NOLINT | 469   259, 261, 263, 265, 267, 269, 271, 273,  // NOLINT | 
| 465   275, 277, 279, 281, 283, 285, 287, 289,  // NOLINT | 470   275, 277, 279, 281, 283, 285, 287, 289,  // NOLINT | 
| 466   291, 293, 295, 297, 299, 301, 303, 305,  // NOLINT | 471   291, 293, 295, 297, 299, 301, 303, 305,  // NOLINT | 
| 467   307, 309, 1073742135, 312, 314, 316, 318, 320,  // NOLINT | 472   307, 309, 1073742135, 312, 314, 316, 318, 320,  // NOLINT | 
| 468   322, 324, 326, 1073742152, 329, 331, 333, 335,  // NOLINT | 473   322, 324, 326, 1073742152, 329, 331, 333, 335,  // NOLINT | 
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 560     case 5: return LookupPredicate(kLowercaseTable5, | 565     case 5: return LookupPredicate(kLowercaseTable5, | 
| 561                                        kLowercaseTable5Size, | 566                                        kLowercaseTable5Size, | 
| 562                                        c); | 567                                        c); | 
| 563     case 7: return LookupPredicate(kLowercaseTable7, | 568     case 7: return LookupPredicate(kLowercaseTable7, | 
| 564                                        kLowercaseTable7Size, | 569                                        kLowercaseTable7Size, | 
| 565                                        c); | 570                                        c); | 
| 566     default: return false; | 571     default: return false; | 
| 567   } | 572   } | 
| 568 } | 573 } | 
| 569 | 574 | 
|  | 575 | 
| 570 // Letter:               point.category in ['Lu', 'Ll', 'Lt', 'Lm', 'Lo', 'Nl' ] | 576 // Letter:               point.category in ['Lu', 'Ll', 'Lt', 'Lm', 'Lo', 'Nl' ] | 
| 571 | 577 | 
| 572 static const uint16_t kLetterTable0Size = 435; | 578 static const uint16_t kLetterTable0Size = 435; | 
| 573 static const int32_t kLetterTable0[435] = { | 579 static const int32_t kLetterTable0[435] = { | 
| 574   1073741889, 90, 1073741921, 122, 170, 181, 186, 1073742016,  // NOLINT | 580   1073741889, 90, 1073741921, 122, 170, 181, 186, 1073742016,  // NOLINT | 
| 575   214, 1073742040, 246, 1073742072, 705, 1073742534, 721, 1073742560,  // NOLINT | 581   214, 1073742040, 246, 1073742072, 705, 1073742534, 721, 1073742560,  // NOLINT | 
| 576   740, 748, 750, 1073742704, 884, 1073742710, 887, 1073742714,  // NOLINT | 582   740, 748, 750, 1073742704, 884, 1073742710, 887, 1073742714,  // NOLINT | 
| 577   893, 902, 1073742728, 906, 908, 1073742734, 929, 1073742755,  // NOLINT | 583   893, 902, 1073742728, 906, 908, 1073742734, 929, 1073742755,  // NOLINT | 
| 578   1013, 1073742839, 1153, 1073742986, 1319, 1073743153, 1366, 1369,  // NOLINT | 584   1013, 1073742839, 1153, 1073742986, 1319, 1073743153, 1366, 1369,  // NOLINT | 
| 579   1073743201, 1415, 1073743312, 1514, 1073743344, 1522, 1073743392, 1610,  // NO
      LINT | 585   1073743201, 1415, 1073743312, 1514, 1073743344, 1522, 1073743392, 1610,  // NO
      LINT | 
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 696     case 6: return LookupPredicate(kLetterTable6, | 702     case 6: return LookupPredicate(kLetterTable6, | 
| 697                                        kLetterTable6Size, | 703                                        kLetterTable6Size, | 
| 698                                        c); | 704                                        c); | 
| 699     case 7: return LookupPredicate(kLetterTable7, | 705     case 7: return LookupPredicate(kLetterTable7, | 
| 700                                        kLetterTable7Size, | 706                                        kLetterTable7Size, | 
| 701                                        c); | 707                                        c); | 
| 702     default: return false; | 708     default: return false; | 
| 703   } | 709   } | 
| 704 } | 710 } | 
| 705 | 711 | 
|  | 712 | 
| 706 // Space:                point.category == 'Zs' | 713 // Space:                point.category == 'Zs' | 
| 707 | 714 | 
| 708 static const uint16_t kSpaceTable0Size = 4; | 715 static const uint16_t kSpaceTable0Size = 4; | 
| 709 static const int32_t kSpaceTable0[4] = { | 716 static const int32_t kSpaceTable0[4] = { | 
| 710   32, 160, 5760, 6158 };  // NOLINT | 717   32, 160, 5760, 6158 };  // NOLINT | 
| 711 static const uint16_t kSpaceTable1Size = 5; | 718 static const uint16_t kSpaceTable1Size = 5; | 
| 712 static const int32_t kSpaceTable1[5] = { | 719 static const int32_t kSpaceTable1[5] = { | 
| 713   1073741824, 10, 47, 95, 4096 };  // NOLINT | 720   1073741824, 10, 47, 95, 4096 };  // NOLINT | 
| 714 bool Space::Is(uchar c) { | 721 bool Space::Is(uchar c) { | 
| 715   int chunk_index = c >> 13; | 722   int chunk_index = c >> 13; | 
| 716   switch (chunk_index) { | 723   switch (chunk_index) { | 
| 717     case 0: return LookupPredicate(kSpaceTable0, | 724     case 0: return LookupPredicate(kSpaceTable0, | 
| 718                                        kSpaceTable0Size, | 725                                        kSpaceTable0Size, | 
| 719                                        c); | 726                                        c); | 
| 720     case 1: return LookupPredicate(kSpaceTable1, | 727     case 1: return LookupPredicate(kSpaceTable1, | 
| 721                                        kSpaceTable1Size, | 728                                        kSpaceTable1Size, | 
| 722                                        c); | 729                                        c); | 
| 723     default: return false; | 730     default: return false; | 
| 724   } | 731   } | 
| 725 } | 732 } | 
| 726 | 733 | 
|  | 734 | 
| 727 // Number:               point.category == 'Nd' | 735 // Number:               point.category == 'Nd' | 
| 728 | 736 | 
| 729 static const uint16_t kNumberTable0Size = 56; | 737 static const uint16_t kNumberTable0Size = 56; | 
| 730 static const int32_t kNumberTable0[56] = { | 738 static const int32_t kNumberTable0[56] = { | 
| 731   1073741872, 57, 1073743456, 1641, 1073743600, 1785, 1073743808, 1993,  // NOLI
      NT | 739   1073741872, 57, 1073743456, 1641, 1073743600, 1785, 1073743808, 1993,  // NOLI
      NT | 
| 732   1073744230, 2415, 1073744358, 2543, 1073744486, 2671, 1073744614, 2799,  // NO
      LINT | 740   1073744230, 2415, 1073744358, 2543, 1073744486, 2671, 1073744614, 2799,  // NO
      LINT | 
| 733   1073744742, 2927, 1073744870, 3055, 1073744998, 3183, 1073745126, 3311,  // NO
      LINT | 741   1073744742, 2927, 1073744870, 3055, 1073744998, 3183, 1073745126, 3311,  // NO
      LINT | 
| 734   1073745254, 3439, 1073745488, 3673, 1073745616, 3801, 1073745696, 3881,  // NO
      LINT | 742   1073745254, 3439, 1073745488, 3673, 1073745616, 3801, 1073745696, 3881,  // NO
      LINT | 
| 735   1073745984, 4169, 1073746064, 4249, 1073747936, 6121, 1073747984, 6169,  // NO
      LINT | 743   1073745984, 4169, 1073746064, 4249, 1073747936, 6121, 1073747984, 6169,  // NO
      LINT | 
| 736   1073748294, 6479, 1073748432, 6617, 1073748608, 6793, 1073748624, 6809,  // NO
      LINT | 744   1073748294, 6479, 1073748432, 6617, 1073748608, 6793, 1073748624, 6809,  // NO
      LINT | 
| (...skipping 14 matching lines...) Expand all  Loading... | 
| 751     case 5: return LookupPredicate(kNumberTable5, | 759     case 5: return LookupPredicate(kNumberTable5, | 
| 752                                        kNumberTable5Size, | 760                                        kNumberTable5Size, | 
| 753                                        c); | 761                                        c); | 
| 754     case 7: return LookupPredicate(kNumberTable7, | 762     case 7: return LookupPredicate(kNumberTable7, | 
| 755                                        kNumberTable7Size, | 763                                        kNumberTable7Size, | 
| 756                                        c); | 764                                        c); | 
| 757     default: return false; | 765     default: return false; | 
| 758   } | 766   } | 
| 759 } | 767 } | 
| 760 | 768 | 
|  | 769 | 
| 761 // WhiteSpace:           'Ws' in point.properties | 770 // WhiteSpace:           'Ws' in point.properties | 
| 762 | 771 | 
| 763 static const uint16_t kWhiteSpaceTable0Size = 7; | 772 static const uint16_t kWhiteSpaceTable0Size = 7; | 
| 764 static const int32_t kWhiteSpaceTable0[7] = { | 773 static const int32_t kWhiteSpaceTable0[7] = { | 
| 765   1073741833, 13, 32, 133, 160, 5760, 6158 };  // NOLINT | 774   1073741833, 13, 32, 133, 160, 5760, 6158 };  // NOLINT | 
| 766 static const uint16_t kWhiteSpaceTable1Size = 7; | 775 static const uint16_t kWhiteSpaceTable1Size = 7; | 
| 767 static const int32_t kWhiteSpaceTable1[7] = { | 776 static const int32_t kWhiteSpaceTable1[7] = { | 
| 768   1073741824, 10, 1073741864, 41, 47, 95, 4096 };  // NOLINT | 777   1073741824, 10, 1073741864, 41, 47, 95, 4096 };  // NOLINT | 
| 769 bool WhiteSpace::Is(uchar c) { | 778 bool WhiteSpace::Is(uchar c) { | 
| 770   int chunk_index = c >> 13; | 779   int chunk_index = c >> 13; | 
| 771   switch (chunk_index) { | 780   switch (chunk_index) { | 
| 772     case 0: return LookupPredicate(kWhiteSpaceTable0, | 781     case 0: return LookupPredicate(kWhiteSpaceTable0, | 
| 773                                        kWhiteSpaceTable0Size, | 782                                        kWhiteSpaceTable0Size, | 
| 774                                        c); | 783                                        c); | 
| 775     case 1: return LookupPredicate(kWhiteSpaceTable1, | 784     case 1: return LookupPredicate(kWhiteSpaceTable1, | 
| 776                                        kWhiteSpaceTable1Size, | 785                                        kWhiteSpaceTable1Size, | 
| 777                                        c); | 786                                        c); | 
| 778     default: return false; | 787     default: return false; | 
| 779   } | 788   } | 
| 780 } | 789 } | 
| 781 | 790 | 
|  | 791 | 
| 782 // LineTerminator:       'Lt' in point.properties | 792 // LineTerminator:       'Lt' in point.properties | 
| 783 | 793 | 
| 784 static const uint16_t kLineTerminatorTable0Size = 2; | 794 static const uint16_t kLineTerminatorTable0Size = 2; | 
| 785 static const int32_t kLineTerminatorTable0[2] = { | 795 static const int32_t kLineTerminatorTable0[2] = { | 
| 786   10, 13 };  // NOLINT | 796   10, 13 };  // NOLINT | 
| 787 static const uint16_t kLineTerminatorTable1Size = 2; | 797 static const uint16_t kLineTerminatorTable1Size = 2; | 
| 788 static const int32_t kLineTerminatorTable1[2] = { | 798 static const int32_t kLineTerminatorTable1[2] = { | 
| 789   1073741864, 41 };  // NOLINT | 799   1073741864, 41 };  // NOLINT | 
| 790 bool LineTerminator::Is(uchar c) { | 800 bool LineTerminator::Is(uchar c) { | 
| 791   int chunk_index = c >> 13; | 801   int chunk_index = c >> 13; | 
| 792   switch (chunk_index) { | 802   switch (chunk_index) { | 
| 793     case 0: return LookupPredicate(kLineTerminatorTable0, | 803     case 0: return LookupPredicate(kLineTerminatorTable0, | 
| 794                                        kLineTerminatorTable0Size, | 804                                        kLineTerminatorTable0Size, | 
| 795                                        c); | 805                                        c); | 
| 796     case 1: return LookupPredicate(kLineTerminatorTable1, | 806     case 1: return LookupPredicate(kLineTerminatorTable1, | 
| 797                                        kLineTerminatorTable1Size, | 807                                        kLineTerminatorTable1Size, | 
| 798                                        c); | 808                                        c); | 
| 799     default: return false; | 809     default: return false; | 
| 800   } | 810   } | 
| 801 } | 811 } | 
| 802 | 812 | 
|  | 813 | 
| 803 // CombiningMark:        point.category in ['Mn', 'Mc'] | 814 // CombiningMark:        point.category in ['Mn', 'Mc'] | 
| 804 | 815 | 
| 805 static const uint16_t kCombiningMarkTable0Size = 258; | 816 static const uint16_t kCombiningMarkTable0Size = 258; | 
| 806 static const int32_t kCombiningMarkTable0[258] = { | 817 static const int32_t kCombiningMarkTable0[258] = { | 
| 807   1073742592, 879, 1073742979, 1159, 1073743249, 1469, 1471, 1073743297,  // NOL
      INT | 818   1073742592, 879, 1073742979, 1159, 1073743249, 1469, 1471, 1073743297,  // NOL
      INT | 
| 808   1474, 1073743300, 1477, 1479, 1073743376, 1562, 1073743435, 1631,  // NOLINT | 819   1474, 1073743300, 1477, 1479, 1073743376, 1562, 1073743435, 1631,  // NOLINT | 
| 809   1648, 1073743574, 1756, 1073743583, 1764, 1073743591, 1768, 1073743594,  // NO
      LINT | 820   1648, 1073743574, 1756, 1073743583, 1764, 1073743591, 1768, 1073743594,  // NO
      LINT | 
| 810   1773, 1809, 1073743664, 1866, 1073743782, 1968, 1073743851, 2035,  // NOLINT | 821   1773, 1809, 1073743664, 1866, 1073743782, 1968, 1073743851, 2035,  // NOLINT | 
| 811   1073743894, 2073, 1073743899, 2083, 1073743909, 2087, 1073743913, 2093,  // NO
      LINT | 822   1073743894, 2073, 1073743899, 2083, 1073743909, 2087, 1073743913, 2093,  // NO
      LINT | 
| 812   1073743961, 2139, 1073744100, 2302, 1073744128, 2307, 1073744186, 2364,  // NO
      LINT | 823   1073743961, 2139, 1073744100, 2302, 1073744128, 2307, 1073744186, 2364,  // NO
      LINT | 
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 864     case 5: return LookupPredicate(kCombiningMarkTable5, | 875     case 5: return LookupPredicate(kCombiningMarkTable5, | 
| 865                                        kCombiningMarkTable5Size, | 876                                        kCombiningMarkTable5Size, | 
| 866                                        c); | 877                                        c); | 
| 867     case 7: return LookupPredicate(kCombiningMarkTable7, | 878     case 7: return LookupPredicate(kCombiningMarkTable7, | 
| 868                                        kCombiningMarkTable7Size, | 879                                        kCombiningMarkTable7Size, | 
| 869                                        c); | 880                                        c); | 
| 870     default: return false; | 881     default: return false; | 
| 871   } | 882   } | 
| 872 } | 883 } | 
| 873 | 884 | 
|  | 885 | 
| 874 // ConnectorPunctuation: point.category == 'Pc' | 886 // ConnectorPunctuation: point.category == 'Pc' | 
| 875 | 887 | 
| 876 static const uint16_t kConnectorPunctuationTable0Size = 1; | 888 static const uint16_t kConnectorPunctuationTable0Size = 1; | 
| 877 static const int32_t kConnectorPunctuationTable0[1] = { | 889 static const int32_t kConnectorPunctuationTable0[1] = { | 
| 878   95 };  // NOLINT | 890   95 };  // NOLINT | 
| 879 static const uint16_t kConnectorPunctuationTable1Size = 3; | 891 static const uint16_t kConnectorPunctuationTable1Size = 3; | 
| 880 static const int32_t kConnectorPunctuationTable1[3] = { | 892 static const int32_t kConnectorPunctuationTable1[3] = { | 
| 881   1073741887, 64, 84 };  // NOLINT | 893   1073741887, 64, 84 };  // NOLINT | 
| 882 static const uint16_t kConnectorPunctuationTable7Size = 5; | 894 static const uint16_t kConnectorPunctuationTable7Size = 5; | 
| 883 static const int32_t kConnectorPunctuationTable7[5] = { | 895 static const int32_t kConnectorPunctuationTable7[5] = { | 
| (...skipping 968 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1852       + kEcma262UnCanonicalizeMultiStrings0Size * sizeof(MultiCharacterSpecialCa
      se<4>)  // NOLINT | 1864       + kEcma262UnCanonicalizeMultiStrings0Size * sizeof(MultiCharacterSpecialCa
      se<4>)  // NOLINT | 
| 1853       + kEcma262UnCanonicalizeMultiStrings1Size * sizeof(MultiCharacterSpecialCa
      se<2>)  // NOLINT | 1865       + kEcma262UnCanonicalizeMultiStrings1Size * sizeof(MultiCharacterSpecialCa
      se<2>)  // NOLINT | 
| 1854       + kEcma262UnCanonicalizeMultiStrings5Size * sizeof(MultiCharacterSpecialCa
      se<2>)  // NOLINT | 1866       + kEcma262UnCanonicalizeMultiStrings5Size * sizeof(MultiCharacterSpecialCa
      se<2>)  // NOLINT | 
| 1855       + kEcma262UnCanonicalizeMultiStrings7Size * sizeof(MultiCharacterSpecialCa
      se<2>)  // NOLINT | 1867       + kEcma262UnCanonicalizeMultiStrings7Size * sizeof(MultiCharacterSpecialCa
      se<2>)  // NOLINT | 
| 1856       + kCanonicalizationRangeMultiStrings0Size * sizeof(MultiCharacterSpecialCa
      se<1>)  // NOLINT | 1868       + kCanonicalizationRangeMultiStrings0Size * sizeof(MultiCharacterSpecialCa
      se<1>)  // NOLINT | 
| 1857       + kCanonicalizationRangeMultiStrings1Size * sizeof(MultiCharacterSpecialCa
      se<1>)  // NOLINT | 1869       + kCanonicalizationRangeMultiStrings1Size * sizeof(MultiCharacterSpecialCa
      se<1>)  // NOLINT | 
| 1858       + kCanonicalizationRangeMultiStrings7Size * sizeof(MultiCharacterSpecialCa
      se<1>); // NOLINT | 1870       + kCanonicalizationRangeMultiStrings7Size * sizeof(MultiCharacterSpecialCa
      se<1>); // NOLINT | 
| 1859 } | 1871 } | 
| 1860 | 1872 | 
| 1861 }  // namespace unicode | 1873 }  // namespace unicode | 
| OLD | NEW | 
|---|