OLD | NEW |
1 // Copyright 2008 the V8 project authors. All rights reserved. | 1 // Copyright 2008 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 661 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
672 v8::internal::ZoneScope zone_; | 672 v8::internal::ZoneScope zone_; |
673 v8::internal::StackGuard stack_guard_; | 673 v8::internal::StackGuard stack_guard_; |
674 }; | 674 }; |
675 | 675 |
676 | 676 |
677 static ArchRegExpMacroAssembler::Result Execute(Code* code, | 677 static ArchRegExpMacroAssembler::Result Execute(Code* code, |
678 String* input, | 678 String* input, |
679 int start_offset, | 679 int start_offset, |
680 const byte* input_start, | 680 const byte* input_start, |
681 const byte* input_end, | 681 const byte* input_end, |
682 int* captures, | 682 int* captures) { |
683 bool at_start) { | |
684 return NativeRegExpMacroAssembler::Execute( | 683 return NativeRegExpMacroAssembler::Execute( |
685 code, | 684 code, |
686 input, | 685 input, |
687 start_offset, | 686 start_offset, |
688 input_start, | 687 input_start, |
689 input_end, | 688 input_end, |
690 captures, | 689 captures); |
691 at_start); | |
692 } | 690 } |
693 | 691 |
694 | 692 |
695 TEST(MacroAssemblerNativeSuccess) { | 693 TEST(MacroAssemblerNativeSuccess) { |
696 v8::V8::Initialize(); | 694 v8::V8::Initialize(); |
697 ContextInitializer initializer; | 695 ContextInitializer initializer; |
698 | 696 |
699 ArchRegExpMacroAssembler m(NativeRegExpMacroAssembler::ASCII, 4); | 697 ArchRegExpMacroAssembler m(NativeRegExpMacroAssembler::ASCII, 4); |
700 | 698 |
701 m.Succeed(); | 699 m.Succeed(); |
702 | 700 |
703 Handle<String> source = Factory::NewStringFromAscii(CStrVector("")); | 701 Handle<String> source = Factory::NewStringFromAscii(CStrVector("")); |
704 Handle<Object> code_object = m.GetCode(source); | 702 Handle<Object> code_object = m.GetCode(source); |
705 Handle<Code> code = Handle<Code>::cast(code_object); | 703 Handle<Code> code = Handle<Code>::cast(code_object); |
706 | 704 |
707 int captures[4] = {42, 37, 87, 117}; | 705 int captures[4] = {42, 37, 87, 117}; |
708 Handle<String> input = Factory::NewStringFromAscii(CStrVector("foofoo")); | 706 Handle<String> input = Factory::NewStringFromAscii(CStrVector("foofoo")); |
709 Handle<SeqAsciiString> seq_input = Handle<SeqAsciiString>::cast(input); | 707 Handle<SeqAsciiString> seq_input = Handle<SeqAsciiString>::cast(input); |
710 const byte* start_adr = | 708 const byte* start_adr = |
711 reinterpret_cast<const byte*>(seq_input->GetCharsAddress()); | 709 reinterpret_cast<const byte*>(seq_input->GetCharsAddress()); |
712 | 710 |
713 NativeRegExpMacroAssembler::Result result = | 711 NativeRegExpMacroAssembler::Result result = |
714 Execute(*code, | 712 Execute(*code, |
715 *input, | 713 *input, |
716 0, | 714 0, |
717 start_adr, | 715 start_adr, |
718 start_adr + seq_input->length(), | 716 start_adr + seq_input->length(), |
719 captures, | 717 captures); |
720 true); | |
721 | 718 |
722 CHECK_EQ(NativeRegExpMacroAssembler::SUCCESS, result); | 719 CHECK_EQ(NativeRegExpMacroAssembler::SUCCESS, result); |
723 CHECK_EQ(-1, captures[0]); | 720 CHECK_EQ(-1, captures[0]); |
724 CHECK_EQ(-1, captures[1]); | 721 CHECK_EQ(-1, captures[1]); |
725 CHECK_EQ(-1, captures[2]); | 722 CHECK_EQ(-1, captures[2]); |
726 CHECK_EQ(-1, captures[3]); | 723 CHECK_EQ(-1, captures[3]); |
727 } | 724 } |
728 | 725 |
729 | 726 |
730 TEST(MacroAssemblerNativeSimple) { | 727 TEST(MacroAssemblerNativeSimple) { |
(...skipping 22 matching lines...) Expand all Loading... |
753 Handle<String> input = Factory::NewStringFromAscii(CStrVector("foofoo")); | 750 Handle<String> input = Factory::NewStringFromAscii(CStrVector("foofoo")); |
754 Handle<SeqAsciiString> seq_input = Handle<SeqAsciiString>::cast(input); | 751 Handle<SeqAsciiString> seq_input = Handle<SeqAsciiString>::cast(input); |
755 Address start_adr = seq_input->GetCharsAddress(); | 752 Address start_adr = seq_input->GetCharsAddress(); |
756 | 753 |
757 NativeRegExpMacroAssembler::Result result = | 754 NativeRegExpMacroAssembler::Result result = |
758 Execute(*code, | 755 Execute(*code, |
759 *input, | 756 *input, |
760 0, | 757 0, |
761 start_adr, | 758 start_adr, |
762 start_adr + input->length(), | 759 start_adr + input->length(), |
763 captures, | 760 captures); |
764 true); | |
765 | 761 |
766 CHECK_EQ(NativeRegExpMacroAssembler::SUCCESS, result); | 762 CHECK_EQ(NativeRegExpMacroAssembler::SUCCESS, result); |
767 CHECK_EQ(0, captures[0]); | 763 CHECK_EQ(0, captures[0]); |
768 CHECK_EQ(3, captures[1]); | 764 CHECK_EQ(3, captures[1]); |
769 CHECK_EQ(-1, captures[2]); | 765 CHECK_EQ(-1, captures[2]); |
770 CHECK_EQ(-1, captures[3]); | 766 CHECK_EQ(-1, captures[3]); |
771 | 767 |
772 input = Factory::NewStringFromAscii(CStrVector("barbarbar")); | 768 input = Factory::NewStringFromAscii(CStrVector("barbarbar")); |
773 seq_input = Handle<SeqAsciiString>::cast(input); | 769 seq_input = Handle<SeqAsciiString>::cast(input); |
774 start_adr = seq_input->GetCharsAddress(); | 770 start_adr = seq_input->GetCharsAddress(); |
775 | 771 |
776 result = Execute(*code, | 772 result = Execute(*code, |
777 *input, | 773 *input, |
778 0, | 774 0, |
779 start_adr, | 775 start_adr, |
780 start_adr + input->length(), | 776 start_adr + input->length(), |
781 captures, | 777 captures); |
782 true); | |
783 | 778 |
784 CHECK_EQ(NativeRegExpMacroAssembler::FAILURE, result); | 779 CHECK_EQ(NativeRegExpMacroAssembler::FAILURE, result); |
785 } | 780 } |
786 | 781 |
787 | 782 |
788 TEST(MacroAssemblerNativeSimpleUC16) { | 783 TEST(MacroAssemblerNativeSimpleUC16) { |
789 v8::V8::Initialize(); | 784 v8::V8::Initialize(); |
790 ContextInitializer initializer; | 785 ContextInitializer initializer; |
791 | 786 |
792 ArchRegExpMacroAssembler m(NativeRegExpMacroAssembler::UC16, 4); | 787 ArchRegExpMacroAssembler m(NativeRegExpMacroAssembler::UC16, 4); |
(...skipping 20 matching lines...) Expand all Loading... |
813 Factory::NewStringFromTwoByte(Vector<const uc16>(input_data, 6)); | 808 Factory::NewStringFromTwoByte(Vector<const uc16>(input_data, 6)); |
814 Handle<SeqTwoByteString> seq_input = Handle<SeqTwoByteString>::cast(input); | 809 Handle<SeqTwoByteString> seq_input = Handle<SeqTwoByteString>::cast(input); |
815 Address start_adr = seq_input->GetCharsAddress(); | 810 Address start_adr = seq_input->GetCharsAddress(); |
816 | 811 |
817 NativeRegExpMacroAssembler::Result result = | 812 NativeRegExpMacroAssembler::Result result = |
818 Execute(*code, | 813 Execute(*code, |
819 *input, | 814 *input, |
820 0, | 815 0, |
821 start_adr, | 816 start_adr, |
822 start_adr + input->length(), | 817 start_adr + input->length(), |
823 captures, | 818 captures); |
824 true); | |
825 | 819 |
826 CHECK_EQ(NativeRegExpMacroAssembler::SUCCESS, result); | 820 CHECK_EQ(NativeRegExpMacroAssembler::SUCCESS, result); |
827 CHECK_EQ(0, captures[0]); | 821 CHECK_EQ(0, captures[0]); |
828 CHECK_EQ(3, captures[1]); | 822 CHECK_EQ(3, captures[1]); |
829 CHECK_EQ(-1, captures[2]); | 823 CHECK_EQ(-1, captures[2]); |
830 CHECK_EQ(-1, captures[3]); | 824 CHECK_EQ(-1, captures[3]); |
831 | 825 |
832 const uc16 input_data2[9] = {'b', 'a', 'r', 'b', 'a', 'r', 'b', 'a', '\xa0'}; | 826 const uc16 input_data2[9] = {'b', 'a', 'r', 'b', 'a', 'r', 'b', 'a', '\xa0'}; |
833 input = Factory::NewStringFromTwoByte(Vector<const uc16>(input_data2, 9)); | 827 input = Factory::NewStringFromTwoByte(Vector<const uc16>(input_data2, 9)); |
834 seq_input = Handle<SeqTwoByteString>::cast(input); | 828 seq_input = Handle<SeqTwoByteString>::cast(input); |
835 start_adr = seq_input->GetCharsAddress(); | 829 start_adr = seq_input->GetCharsAddress(); |
836 | 830 |
837 result = Execute(*code, | 831 result = Execute(*code, |
838 *input, | 832 *input, |
839 0, | 833 0, |
840 start_adr, | 834 start_adr, |
841 start_adr + input->length() * 2, | 835 start_adr + input->length() * 2, |
842 captures, | 836 captures); |
843 true); | |
844 | 837 |
845 CHECK_EQ(NativeRegExpMacroAssembler::FAILURE, result); | 838 CHECK_EQ(NativeRegExpMacroAssembler::FAILURE, result); |
846 } | 839 } |
847 | 840 |
848 | 841 |
849 TEST(MacroAssemblerNativeBacktrack) { | 842 TEST(MacroAssemblerNativeBacktrack) { |
850 v8::V8::Initialize(); | 843 v8::V8::Initialize(); |
851 ContextInitializer initializer; | 844 ContextInitializer initializer; |
852 | 845 |
853 ArchRegExpMacroAssembler m(NativeRegExpMacroAssembler::ASCII, 0); | 846 ArchRegExpMacroAssembler m(NativeRegExpMacroAssembler::ASCII, 0); |
(...skipping 16 matching lines...) Expand all Loading... |
870 Handle<String> input = Factory::NewStringFromAscii(CStrVector("foofoo")); | 863 Handle<String> input = Factory::NewStringFromAscii(CStrVector("foofoo")); |
871 Handle<SeqAsciiString> seq_input = Handle<SeqAsciiString>::cast(input); | 864 Handle<SeqAsciiString> seq_input = Handle<SeqAsciiString>::cast(input); |
872 Address start_adr = seq_input->GetCharsAddress(); | 865 Address start_adr = seq_input->GetCharsAddress(); |
873 | 866 |
874 NativeRegExpMacroAssembler::Result result = | 867 NativeRegExpMacroAssembler::Result result = |
875 Execute(*code, | 868 Execute(*code, |
876 *input, | 869 *input, |
877 0, | 870 0, |
878 start_adr, | 871 start_adr, |
879 start_adr + input->length(), | 872 start_adr + input->length(), |
880 NULL, | 873 NULL); |
881 true); | |
882 | 874 |
883 CHECK_EQ(NativeRegExpMacroAssembler::FAILURE, result); | 875 CHECK_EQ(NativeRegExpMacroAssembler::FAILURE, result); |
884 } | 876 } |
885 | 877 |
886 | 878 |
887 TEST(MacroAssemblerNativeBackReferenceASCII) { | 879 TEST(MacroAssemblerNativeBackReferenceASCII) { |
888 v8::V8::Initialize(); | 880 v8::V8::Initialize(); |
889 ContextInitializer initializer; | 881 ContextInitializer initializer; |
890 | 882 |
891 ArchRegExpMacroAssembler m(NativeRegExpMacroAssembler::ASCII, 4); | 883 ArchRegExpMacroAssembler m(NativeRegExpMacroAssembler::ASCII, 4); |
(...skipping 21 matching lines...) Expand all Loading... |
913 Handle<SeqAsciiString> seq_input = Handle<SeqAsciiString>::cast(input); | 905 Handle<SeqAsciiString> seq_input = Handle<SeqAsciiString>::cast(input); |
914 Address start_adr = seq_input->GetCharsAddress(); | 906 Address start_adr = seq_input->GetCharsAddress(); |
915 | 907 |
916 int output[4]; | 908 int output[4]; |
917 NativeRegExpMacroAssembler::Result result = | 909 NativeRegExpMacroAssembler::Result result = |
918 Execute(*code, | 910 Execute(*code, |
919 *input, | 911 *input, |
920 0, | 912 0, |
921 start_adr, | 913 start_adr, |
922 start_adr + input->length(), | 914 start_adr + input->length(), |
923 output, | 915 output); |
924 true); | |
925 | 916 |
926 CHECK_EQ(NativeRegExpMacroAssembler::SUCCESS, result); | 917 CHECK_EQ(NativeRegExpMacroAssembler::SUCCESS, result); |
927 CHECK_EQ(0, output[0]); | 918 CHECK_EQ(0, output[0]); |
928 CHECK_EQ(2, output[1]); | 919 CHECK_EQ(2, output[1]); |
929 CHECK_EQ(6, output[2]); | 920 CHECK_EQ(6, output[2]); |
930 CHECK_EQ(-1, output[3]); | 921 CHECK_EQ(-1, output[3]); |
931 } | 922 } |
932 | 923 |
933 | 924 |
934 TEST(MacroAssemblerNativeBackReferenceUC16) { | 925 TEST(MacroAssemblerNativeBackReferenceUC16) { |
(...skipping 27 matching lines...) Expand all Loading... |
962 Handle<SeqTwoByteString> seq_input = Handle<SeqTwoByteString>::cast(input); | 953 Handle<SeqTwoByteString> seq_input = Handle<SeqTwoByteString>::cast(input); |
963 Address start_adr = seq_input->GetCharsAddress(); | 954 Address start_adr = seq_input->GetCharsAddress(); |
964 | 955 |
965 int output[4]; | 956 int output[4]; |
966 NativeRegExpMacroAssembler::Result result = | 957 NativeRegExpMacroAssembler::Result result = |
967 Execute(*code, | 958 Execute(*code, |
968 *input, | 959 *input, |
969 0, | 960 0, |
970 start_adr, | 961 start_adr, |
971 start_adr + input->length() * 2, | 962 start_adr + input->length() * 2, |
972 output, | 963 output); |
973 true); | |
974 | 964 |
975 CHECK_EQ(NativeRegExpMacroAssembler::SUCCESS, result); | 965 CHECK_EQ(NativeRegExpMacroAssembler::SUCCESS, result); |
976 CHECK_EQ(0, output[0]); | 966 CHECK_EQ(0, output[0]); |
977 CHECK_EQ(2, output[1]); | 967 CHECK_EQ(2, output[1]); |
978 CHECK_EQ(6, output[2]); | 968 CHECK_EQ(6, output[2]); |
979 CHECK_EQ(-1, output[3]); | 969 CHECK_EQ(-1, output[3]); |
980 } | 970 } |
981 | 971 |
982 | 972 |
983 | 973 |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1015 Handle<String> input = Factory::NewStringFromAscii(CStrVector("foobar")); | 1005 Handle<String> input = Factory::NewStringFromAscii(CStrVector("foobar")); |
1016 Handle<SeqAsciiString> seq_input = Handle<SeqAsciiString>::cast(input); | 1006 Handle<SeqAsciiString> seq_input = Handle<SeqAsciiString>::cast(input); |
1017 Address start_adr = seq_input->GetCharsAddress(); | 1007 Address start_adr = seq_input->GetCharsAddress(); |
1018 | 1008 |
1019 NativeRegExpMacroAssembler::Result result = | 1009 NativeRegExpMacroAssembler::Result result = |
1020 Execute(*code, | 1010 Execute(*code, |
1021 *input, | 1011 *input, |
1022 0, | 1012 0, |
1023 start_adr, | 1013 start_adr, |
1024 start_adr + input->length(), | 1014 start_adr + input->length(), |
1025 NULL, | 1015 NULL); |
1026 true); | |
1027 | 1016 |
1028 CHECK_EQ(NativeRegExpMacroAssembler::SUCCESS, result); | 1017 CHECK_EQ(NativeRegExpMacroAssembler::SUCCESS, result); |
1029 | 1018 |
1030 result = Execute(*code, | 1019 result = Execute(*code, |
1031 *input, | 1020 *input, |
1032 3, | 1021 3, |
1033 start_adr + 3, | 1022 start_adr + 3, |
1034 start_adr + input->length(), | 1023 start_adr + input->length(), |
1035 NULL, | 1024 NULL); |
1036 false); | |
1037 | 1025 |
1038 CHECK_EQ(NativeRegExpMacroAssembler::SUCCESS, result); | 1026 CHECK_EQ(NativeRegExpMacroAssembler::SUCCESS, result); |
1039 } | 1027 } |
1040 | 1028 |
1041 | 1029 |
1042 TEST(MacroAssemblerNativeBackRefNoCase) { | 1030 TEST(MacroAssemblerNativeBackRefNoCase) { |
1043 v8::V8::Initialize(); | 1031 v8::V8::Initialize(); |
1044 ContextInitializer initializer; | 1032 ContextInitializer initializer; |
1045 | 1033 |
1046 ArchRegExpMacroAssembler m(NativeRegExpMacroAssembler::ASCII, 4); | 1034 ArchRegExpMacroAssembler m(NativeRegExpMacroAssembler::ASCII, 4); |
(...skipping 30 matching lines...) Expand all Loading... |
1077 Handle<SeqAsciiString> seq_input = Handle<SeqAsciiString>::cast(input); | 1065 Handle<SeqAsciiString> seq_input = Handle<SeqAsciiString>::cast(input); |
1078 Address start_adr = seq_input->GetCharsAddress(); | 1066 Address start_adr = seq_input->GetCharsAddress(); |
1079 | 1067 |
1080 int output[4]; | 1068 int output[4]; |
1081 NativeRegExpMacroAssembler::Result result = | 1069 NativeRegExpMacroAssembler::Result result = |
1082 Execute(*code, | 1070 Execute(*code, |
1083 *input, | 1071 *input, |
1084 0, | 1072 0, |
1085 start_adr, | 1073 start_adr, |
1086 start_adr + input->length(), | 1074 start_adr + input->length(), |
1087 output, | 1075 output); |
1088 true); | |
1089 | 1076 |
1090 CHECK_EQ(NativeRegExpMacroAssembler::SUCCESS, result); | 1077 CHECK_EQ(NativeRegExpMacroAssembler::SUCCESS, result); |
1091 CHECK_EQ(0, output[0]); | 1078 CHECK_EQ(0, output[0]); |
1092 CHECK_EQ(12, output[1]); | 1079 CHECK_EQ(12, output[1]); |
1093 CHECK_EQ(0, output[2]); | 1080 CHECK_EQ(0, output[2]); |
1094 CHECK_EQ(3, output[3]); | 1081 CHECK_EQ(3, output[3]); |
1095 } | 1082 } |
1096 | 1083 |
1097 | 1084 |
1098 | 1085 |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1177 Handle<SeqAsciiString> seq_input = Handle<SeqAsciiString>::cast(input); | 1164 Handle<SeqAsciiString> seq_input = Handle<SeqAsciiString>::cast(input); |
1178 Address start_adr = seq_input->GetCharsAddress(); | 1165 Address start_adr = seq_input->GetCharsAddress(); |
1179 | 1166 |
1180 int output[6]; | 1167 int output[6]; |
1181 NativeRegExpMacroAssembler::Result result = | 1168 NativeRegExpMacroAssembler::Result result = |
1182 Execute(*code, | 1169 Execute(*code, |
1183 *input, | 1170 *input, |
1184 0, | 1171 0, |
1185 start_adr, | 1172 start_adr, |
1186 start_adr + input->length(), | 1173 start_adr + input->length(), |
1187 output, | 1174 output); |
1188 true); | |
1189 | 1175 |
1190 CHECK_EQ(NativeRegExpMacroAssembler::SUCCESS, result); | 1176 CHECK_EQ(NativeRegExpMacroAssembler::SUCCESS, result); |
1191 CHECK_EQ(0, output[0]); | 1177 CHECK_EQ(0, output[0]); |
1192 CHECK_EQ(3, output[1]); | 1178 CHECK_EQ(3, output[1]); |
1193 CHECK_EQ(6, output[2]); | 1179 CHECK_EQ(6, output[2]); |
1194 CHECK_EQ(9, output[3]); | 1180 CHECK_EQ(9, output[3]); |
1195 CHECK_EQ(9, output[4]); | 1181 CHECK_EQ(9, output[4]); |
1196 CHECK_EQ(-1, output[5]); | 1182 CHECK_EQ(-1, output[5]); |
1197 } | 1183 } |
1198 | 1184 |
(...skipping 19 matching lines...) Expand all Loading... |
1218 Factory::NewStringFromAscii(CStrVector("dummy")); | 1204 Factory::NewStringFromAscii(CStrVector("dummy")); |
1219 Handle<SeqAsciiString> seq_input = Handle<SeqAsciiString>::cast(input); | 1205 Handle<SeqAsciiString> seq_input = Handle<SeqAsciiString>::cast(input); |
1220 Address start_adr = seq_input->GetCharsAddress(); | 1206 Address start_adr = seq_input->GetCharsAddress(); |
1221 | 1207 |
1222 NativeRegExpMacroAssembler::Result result = | 1208 NativeRegExpMacroAssembler::Result result = |
1223 Execute(*code, | 1209 Execute(*code, |
1224 *input, | 1210 *input, |
1225 0, | 1211 0, |
1226 start_adr, | 1212 start_adr, |
1227 start_adr + input->length(), | 1213 start_adr + input->length(), |
1228 NULL, | 1214 NULL); |
1229 true); | |
1230 | 1215 |
1231 CHECK_EQ(NativeRegExpMacroAssembler::EXCEPTION, result); | 1216 CHECK_EQ(NativeRegExpMacroAssembler::EXCEPTION, result); |
1232 CHECK(Top::has_pending_exception()); | 1217 CHECK(Top::has_pending_exception()); |
1233 Top::clear_pending_exception(); | 1218 Top::clear_pending_exception(); |
1234 } | 1219 } |
1235 | 1220 |
1236 | 1221 |
1237 TEST(MacroAssemblerNativeLotsOfRegisters) { | 1222 TEST(MacroAssemblerNativeLotsOfRegisters) { |
1238 v8::V8::Initialize(); | 1223 v8::V8::Initialize(); |
1239 ContextInitializer initializer; | 1224 ContextInitializer initializer; |
(...skipping 24 matching lines...) Expand all Loading... |
1264 Handle<SeqAsciiString> seq_input = Handle<SeqAsciiString>::cast(input); | 1249 Handle<SeqAsciiString> seq_input = Handle<SeqAsciiString>::cast(input); |
1265 Address start_adr = seq_input->GetCharsAddress(); | 1250 Address start_adr = seq_input->GetCharsAddress(); |
1266 | 1251 |
1267 int captures[2]; | 1252 int captures[2]; |
1268 NativeRegExpMacroAssembler::Result result = | 1253 NativeRegExpMacroAssembler::Result result = |
1269 Execute(*code, | 1254 Execute(*code, |
1270 *input, | 1255 *input, |
1271 0, | 1256 0, |
1272 start_adr, | 1257 start_adr, |
1273 start_adr + input->length(), | 1258 start_adr + input->length(), |
1274 captures, | 1259 captures); |
1275 true); | |
1276 | 1260 |
1277 CHECK_EQ(NativeRegExpMacroAssembler::SUCCESS, result); | 1261 CHECK_EQ(NativeRegExpMacroAssembler::SUCCESS, result); |
1278 CHECK_EQ(0, captures[0]); | 1262 CHECK_EQ(0, captures[0]); |
1279 CHECK_EQ(42, captures[1]); | 1263 CHECK_EQ(42, captures[1]); |
1280 | 1264 |
1281 Top::clear_pending_exception(); | 1265 Top::clear_pending_exception(); |
1282 } | 1266 } |
1283 | 1267 |
1284 #else // ! V8_REGEX_NATIVE | 1268 #else // ! V8_REGEX_NATIVE |
1285 | 1269 |
(...skipping 520 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1806 bool in_second = CharacterInSet(&l2, i); | 1790 bool in_second = CharacterInSet(&l2, i); |
1807 CHECK((in_first || in_second) == CharacterInSet(&all, i)); | 1791 CHECK((in_first || in_second) == CharacterInSet(&all, i)); |
1808 } | 1792 } |
1809 } | 1793 } |
1810 | 1794 |
1811 | 1795 |
1812 TEST(Graph) { | 1796 TEST(Graph) { |
1813 V8::Initialize(NULL); | 1797 V8::Initialize(NULL); |
1814 Execute("\\b\\w+\\b", false, true, true); | 1798 Execute("\\b\\w+\\b", false, true, true); |
1815 } | 1799 } |
OLD | NEW |