Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(76)

Side by Side Diff: src/unicode.cc

Issue 18509003: Keep two empty lines between declarations for cpp files (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/types.cc ('k') | src/v8.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « src/types.cc ('k') | src/v8.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698