OLD | NEW |
1 // Copyright 2008 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 |
11 // with the distribution. | 11 // with the distribution. |
(...skipping 487 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
499 Isolate* isolate = Isolate::Current(); | 499 Isolate* isolate = Isolate::Current(); |
500 FlatStringReader reader(isolate, CStrVector(input)); | 500 FlatStringReader reader(isolate, CStrVector(input)); |
501 RegExpCompileData compile_data; | 501 RegExpCompileData compile_data; |
502 if (!v8::internal::RegExpParser::ParseRegExp(&reader, multiline, | 502 if (!v8::internal::RegExpParser::ParseRegExp(&reader, multiline, |
503 &compile_data)) | 503 &compile_data)) |
504 return NULL; | 504 return NULL; |
505 Handle<String> pattern = isolate->factory()-> | 505 Handle<String> pattern = isolate->factory()-> |
506 NewStringFromUtf8(CStrVector(input)); | 506 NewStringFromUtf8(CStrVector(input)); |
507 Handle<String> sample_subject = | 507 Handle<String> sample_subject = |
508 isolate->factory()->NewStringFromUtf8(CStrVector("")); | 508 isolate->factory()->NewStringFromUtf8(CStrVector("")); |
509 RegExpEngine::Compile( | 509 RegExpEngine::Compile(&compile_data, |
510 &compile_data, false, multiline, pattern, sample_subject, is_ascii); | 510 false, |
| 511 false, |
| 512 multiline, |
| 513 pattern, |
| 514 sample_subject, |
| 515 is_ascii); |
511 return compile_data.node; | 516 return compile_data.node; |
512 } | 517 } |
513 | 518 |
514 | 519 |
515 static void Execute(const char* input, | 520 static void Execute(const char* input, |
516 bool multiline, | 521 bool multiline, |
517 bool is_ascii, | 522 bool is_ascii, |
518 bool dot_output = false) { | 523 bool dot_output = false) { |
519 v8::HandleScope scope; | 524 v8::HandleScope scope; |
520 ZoneScope zone_scope(Isolate::Current(), DELETE_ON_EXIT); | 525 ZoneScope zone_scope(Isolate::Current(), DELETE_ON_EXIT); |
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
713 const byte* input_start, | 718 const byte* input_start, |
714 const byte* input_end, | 719 const byte* input_end, |
715 int* captures) { | 720 int* captures) { |
716 return NativeRegExpMacroAssembler::Execute( | 721 return NativeRegExpMacroAssembler::Execute( |
717 code, | 722 code, |
718 input, | 723 input, |
719 start_offset, | 724 start_offset, |
720 input_start, | 725 input_start, |
721 input_end, | 726 input_end, |
722 captures, | 727 captures, |
| 728 0, |
723 Isolate::Current()); | 729 Isolate::Current()); |
724 } | 730 } |
725 | 731 |
726 | 732 |
727 TEST(MacroAssemblerNativeSuccess) { | 733 TEST(MacroAssemblerNativeSuccess) { |
728 v8::V8::Initialize(); | 734 v8::V8::Initialize(); |
729 ContextInitializer initializer; | 735 ContextInitializer initializer; |
730 Factory* factory = Isolate::Current()->factory(); | 736 Factory* factory = Isolate::Current()->factory(); |
731 | 737 |
732 ArchRegExpMacroAssembler m(NativeRegExpMacroAssembler::ASCII, 4); | 738 ArchRegExpMacroAssembler m(NativeRegExpMacroAssembler::ASCII, 4); |
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
991 | 997 |
992 const uc16 input_data[6] = {'f', 0x2028, 'o', 'o', 'f', 0x2028}; | 998 const uc16 input_data[6] = {'f', 0x2028, 'o', 'o', 'f', 0x2028}; |
993 Handle<String> input = | 999 Handle<String> input = |
994 factory->NewStringFromTwoByte(Vector<const uc16>(input_data, 6)); | 1000 factory->NewStringFromTwoByte(Vector<const uc16>(input_data, 6)); |
995 Handle<SeqTwoByteString> seq_input = Handle<SeqTwoByteString>::cast(input); | 1001 Handle<SeqTwoByteString> seq_input = Handle<SeqTwoByteString>::cast(input); |
996 Address start_adr = seq_input->GetCharsAddress(); | 1002 Address start_adr = seq_input->GetCharsAddress(); |
997 | 1003 |
998 int output[4]; | 1004 int output[4]; |
999 NativeRegExpMacroAssembler::Result result = | 1005 NativeRegExpMacroAssembler::Result result = |
1000 Execute(*code, | 1006 Execute(*code, |
1001 *input, | 1007 *input, |
1002 0, | 1008 0, |
1003 start_adr, | 1009 start_adr, |
1004 start_adr + input->length() * 2, | 1010 start_adr + input->length() * 2, |
1005 output); | 1011 output); |
1006 | 1012 |
1007 CHECK_EQ(NativeRegExpMacroAssembler::SUCCESS, result); | 1013 CHECK_EQ(NativeRegExpMacroAssembler::SUCCESS, result); |
1008 CHECK_EQ(0, output[0]); | 1014 CHECK_EQ(0, output[0]); |
1009 CHECK_EQ(2, output[1]); | 1015 CHECK_EQ(2, output[1]); |
1010 CHECK_EQ(6, output[2]); | 1016 CHECK_EQ(6, output[2]); |
1011 CHECK_EQ(-1, output[3]); | 1017 CHECK_EQ(-1, output[3]); |
1012 } | 1018 } |
1013 | 1019 |
1014 | 1020 |
1015 | 1021 |
(...skipping 742 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1758 ZoneList<CharacterRange> first_only(4); | 1764 ZoneList<CharacterRange> first_only(4); |
1759 ZoneList<CharacterRange> second_only(4); | 1765 ZoneList<CharacterRange> second_only(4); |
1760 ZoneList<CharacterRange> both(4); | 1766 ZoneList<CharacterRange> both(4); |
1761 } | 1767 } |
1762 | 1768 |
1763 | 1769 |
1764 TEST(Graph) { | 1770 TEST(Graph) { |
1765 V8::Initialize(NULL); | 1771 V8::Initialize(NULL); |
1766 Execute("\\b\\w+\\b", false, true, true); | 1772 Execute("\\b\\w+\\b", false, true, true); |
1767 } | 1773 } |
OLD | NEW |