Commit 6c1e5ad
buffer: add Buffer.prototype.lastIndexOf()
* Remove unnecessary templating from SearchString
SearchString used to have separate PatternChar and SubjectChar template type
arguments, apparently to support things like searching for an 8-bit string
inside a 16-bit string or vice versa. However, SearchString is only used from
node_buffer.cc, where PatternChar and SubjectChar are always the same. Since
this is extra complexity that's unused and untested (simplifying to a single
Char template argument still compiles and didn't break any unit tests), I
removed it.
* Use Boyer-Hoore[-Horspool] for both indexOf and lastIndexOf
Add test cases for lastIndexOf. Test the fallback from BMH to
Boyer-Moore, which looks like it was totally untested before.
* Extra bounds checks in node_buffer.cc
* Extra asserts in string_search.h
* Buffer.lastIndexOf: clean up, enforce consistency w/ String.lastIndexOf
* Polyfill memrchr(3) for non-GNU systems
PR-URL: #4846
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Trevor Norris <[email protected]>1 parent d5922bd commit 6c1e5ad
File tree
5 files changed
+471
-252
lines changed- doc/api
- lib
- src
- test/parallel
5 files changed
+471
-252
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
988 | 988 | | |
989 | 989 | | |
990 | 990 | | |
| 991 | + | |
| 992 | + | |
| 993 | + | |
| 994 | + | |
| 995 | + | |
| 996 | + | |
| 997 | + | |
| 998 | + | |
| 999 | + | |
| 1000 | + | |
| 1001 | + | |
| 1002 | + | |
| 1003 | + | |
| 1004 | + | |
| 1005 | + | |
| 1006 | + | |
| 1007 | + | |
| 1008 | + | |
| 1009 | + | |
| 1010 | + | |
| 1011 | + | |
| 1012 | + | |
| 1013 | + | |
| 1014 | + | |
| 1015 | + | |
| 1016 | + | |
| 1017 | + | |
| 1018 | + | |
| 1019 | + | |
| 1020 | + | |
| 1021 | + | |
| 1022 | + | |
| 1023 | + | |
| 1024 | + | |
| 1025 | + | |
| 1026 | + | |
| 1027 | + | |
| 1028 | + | |
| 1029 | + | |
| 1030 | + | |
991 | 1031 | | |
992 | 1032 | | |
993 | 1033 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
598 | 598 | | |
599 | 599 | | |
600 | 600 | | |
601 | | - | |
| 601 | + | |
| 602 | + | |
| 603 | + | |
| 604 | + | |
| 605 | + | |
| 606 | + | |
| 607 | + | |
| 608 | + | |
| 609 | + | |
| 610 | + | |
| 611 | + | |
| 612 | + | |
| 613 | + | |
| 614 | + | |
| 615 | + | |
| 616 | + | |
| 617 | + | |
| 618 | + | |
| 619 | + | |
| 620 | + | |
| 621 | + | |
| 622 | + | |
| 623 | + | |
| 624 | + | |
| 625 | + | |
| 626 | + | |
| 627 | + | |
| 628 | + | |
| 629 | + | |
| 630 | + | |
| 631 | + | |
| 632 | + | |
| 633 | + | |
| 634 | + | |
| 635 | + | |
| 636 | + | |
| 637 | + | |
| 638 | + | |
| 639 | + | |
| 640 | + | |
| 641 | + | |
| 642 | + | |
602 | 643 | | |
603 | 644 | | |
604 | 645 | | |
| |||
609 | 650 | | |
610 | 651 | | |
611 | 652 | | |
612 | | - | |
| 653 | + | |
613 | 654 | | |
614 | 655 | | |
615 | 656 | | |
616 | 657 | | |
617 | 658 | | |
618 | | - | |
| 659 | + | |
619 | 660 | | |
620 | 661 | | |
621 | 662 | | |
| |||
628 | 669 | | |
629 | 670 | | |
630 | 671 | | |
| 672 | + | |
631 | 673 | | |
632 | | - | |
633 | | - | |
634 | | - | |
635 | | - | |
636 | | - | |
637 | | - | |
638 | | - | |
639 | | - | |
640 | | - | |
| 674 | + | |
| 675 | + | |
641 | 676 | | |
642 | | - | |
643 | | - | |
644 | | - | |
645 | | - | |
646 | | - | |
647 | | - | |
648 | | - | |
649 | | - | |
650 | | - | |
651 | | - | |
652 | 677 | | |
653 | | - | |
| 678 | + | |
| 679 | + | |
654 | 680 | | |
655 | 681 | | |
656 | 682 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
943 | 943 | | |
944 | 944 | | |
945 | 945 | | |
| 946 | + | |
| 947 | + | |
| 948 | + | |
| 949 | + | |
| 950 | + | |
| 951 | + | |
| 952 | + | |
| 953 | + | |
| 954 | + | |
| 955 | + | |
| 956 | + | |
| 957 | + | |
| 958 | + | |
| 959 | + | |
| 960 | + | |
| 961 | + | |
| 962 | + | |
| 963 | + | |
| 964 | + | |
| 965 | + | |
| 966 | + | |
| 967 | + | |
| 968 | + | |
| 969 | + | |
| 970 | + | |
| 971 | + | |
| 972 | + | |
| 973 | + | |
| 974 | + | |
| 975 | + | |
| 976 | + | |
| 977 | + | |
| 978 | + | |
| 979 | + | |
946 | 980 | | |
947 | 981 | | |
948 | 982 | | |
| 983 | + | |
949 | 984 | | |
950 | 985 | | |
951 | 986 | | |
| |||
955 | 990 | | |
956 | 991 | | |
957 | 992 | | |
| 993 | + | |
| 994 | + | |
| 995 | + | |
958 | 996 | | |
959 | 997 | | |
960 | 998 | | |
961 | 999 | | |
962 | 1000 | | |
963 | 1001 | | |
964 | | - | |
965 | 1002 | | |
966 | 1003 | | |
967 | 1004 | | |
968 | 1005 | | |
969 | | - | |
970 | | - | |
971 | | - | |
972 | | - | |
973 | | - | |
974 | | - | |
975 | | - | |
976 | | - | |
977 | | - | |
978 | | - | |
979 | | - | |
| 1006 | + | |
| 1007 | + | |
| 1008 | + | |
980 | 1009 | | |
981 | | - | |
982 | | - | |
| 1010 | + | |
| 1011 | + | |
| 1012 | + | |
983 | 1013 | | |
984 | 1014 | | |
985 | 1015 | | |
| |||
1007 | 1037 | | |
1008 | 1038 | | |
1009 | 1039 | | |
1010 | | - | |
| 1040 | + | |
| 1041 | + | |
1011 | 1042 | | |
1012 | 1043 | | |
1013 | 1044 | | |
1014 | 1045 | | |
1015 | 1046 | | |
1016 | | - | |
| 1047 | + | |
| 1048 | + | |
1017 | 1049 | | |
1018 | 1050 | | |
1019 | 1051 | | |
| |||
1025 | 1057 | | |
1026 | 1058 | | |
1027 | 1059 | | |
1028 | | - | |
| 1060 | + | |
| 1061 | + | |
1029 | 1062 | | |
1030 | 1063 | | |
1031 | 1064 | | |
| |||
1038 | 1071 | | |
1039 | 1072 | | |
1040 | 1073 | | |
1041 | | - | |
| 1074 | + | |
| 1075 | + | |
1042 | 1076 | | |
1043 | 1077 | | |
1044 | 1078 | | |
| |||
1049 | 1083 | | |
1050 | 1084 | | |
1051 | 1085 | | |
| 1086 | + | |
1052 | 1087 | | |
1053 | 1088 | | |
1054 | 1089 | | |
1055 | 1090 | | |
1056 | 1091 | | |
1057 | 1092 | | |
| 1093 | + | |
1058 | 1094 | | |
1059 | 1095 | | |
1060 | | - | |
1061 | | - | |
1062 | | - | |
| 1096 | + | |
| 1097 | + | |
1063 | 1098 | | |
1064 | 1099 | | |
1065 | 1100 | | |
| |||
1070 | 1105 | | |
1071 | 1106 | | |
1072 | 1107 | | |
1073 | | - | |
1074 | | - | |
1075 | | - | |
1076 | | - | |
1077 | | - | |
1078 | | - | |
1079 | | - | |
1080 | | - | |
1081 | | - | |
1082 | | - | |
| 1108 | + | |
| 1109 | + | |
| 1110 | + | |
1083 | 1111 | | |
1084 | | - | |
1085 | | - | |
| 1112 | + | |
| 1113 | + | |
| 1114 | + | |
1086 | 1115 | | |
1087 | 1116 | | |
1088 | 1117 | | |
| |||
1097 | 1126 | | |
1098 | 1127 | | |
1099 | 1128 | | |
1100 | | - | |
| 1129 | + | |
| 1130 | + | |
1101 | 1131 | | |
1102 | 1132 | | |
1103 | 1133 | | |
1104 | 1134 | | |
1105 | 1135 | | |
1106 | 1136 | | |
1107 | 1137 | | |
1108 | | - | |
| 1138 | + | |
| 1139 | + | |
1109 | 1140 | | |
1110 | 1141 | | |
1111 | 1142 | | |
| |||
1115 | 1146 | | |
1116 | 1147 | | |
1117 | 1148 | | |
| 1149 | + | |
1118 | 1150 | | |
1119 | 1151 | | |
1120 | 1152 | | |
1121 | 1153 | | |
1122 | 1154 | | |
1123 | 1155 | | |
1124 | | - | |
1125 | | - | |
1126 | | - | |
1127 | | - | |
1128 | | - | |
1129 | | - | |
1130 | | - | |
1131 | | - | |
1132 | | - | |
1133 | | - | |
| 1156 | + | |
1134 | 1157 | | |
1135 | | - | |
| 1158 | + | |
| 1159 | + | |
1136 | 1160 | | |
| 1161 | + | |
| 1162 | + | |
| 1163 | + | |
1137 | 1164 | | |
1138 | | - | |
1139 | | - | |
| 1165 | + | |
| 1166 | + | |
| 1167 | + | |
| 1168 | + | |
| 1169 | + | |
| 1170 | + | |
| 1171 | + | |
1140 | 1172 | | |
1141 | 1173 | | |
1142 | 1174 | | |
| |||
0 commit comments