| 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 |