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

Side by Side Diff: test/cctest/test-regexp.cc

Issue 148503002: A64: Synchronize with r15545. (Closed) Base URL: https://v8.googlecode.com/svn/branches/experimental/a64
Patch Set: Created 6 years, 10 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 | « test/cctest/test-profile-generator.cc ('k') | test/cctest/test-thread-termination.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 26 matching lines...) Expand all
37 #include "parser.h" 37 #include "parser.h"
38 #include "regexp-macro-assembler.h" 38 #include "regexp-macro-assembler.h"
39 #include "regexp-macro-assembler-irregexp.h" 39 #include "regexp-macro-assembler-irregexp.h"
40 #include "string-stream.h" 40 #include "string-stream.h"
41 #include "zone-inl.h" 41 #include "zone-inl.h"
42 #ifdef V8_INTERPRETED_REGEXP 42 #ifdef V8_INTERPRETED_REGEXP
43 #include "interpreter-irregexp.h" 43 #include "interpreter-irregexp.h"
44 #else // V8_INTERPRETED_REGEXP 44 #else // V8_INTERPRETED_REGEXP
45 #include "macro-assembler.h" 45 #include "macro-assembler.h"
46 #include "code.h" 46 #include "code.h"
47 #ifdef V8_TARGET_ARCH_ARM 47 #if V8_TARGET_ARCH_ARM
48 #include "arm/assembler-arm.h" 48 #include "arm/assembler-arm.h"
49 #include "arm/macro-assembler-arm.h" 49 #include "arm/macro-assembler-arm.h"
50 #include "arm/regexp-macro-assembler-arm.h" 50 #include "arm/regexp-macro-assembler-arm.h"
51 #endif 51 #endif
52 #ifdef V8_TARGET_ARCH_A64 52 #if V8_TARGET_ARCH_A64
53 #include "a64/assembler-a64.h" 53 #include "a64/assembler-a64.h"
54 #include "a64/macro-assembler-a64.h" 54 #include "a64/macro-assembler-a64.h"
55 #include "a64/regexp-macro-assembler-a64.h" 55 #include "a64/regexp-macro-assembler-a64.h"
56 #endif 56 #endif
57 #ifdef V8_TARGET_ARCH_MIPS 57 #if V8_TARGET_ARCH_MIPS
58 #include "mips/assembler-mips.h" 58 #include "mips/assembler-mips.h"
59 #include "mips/macro-assembler-mips.h" 59 #include "mips/macro-assembler-mips.h"
60 #include "mips/regexp-macro-assembler-mips.h" 60 #include "mips/regexp-macro-assembler-mips.h"
61 #endif 61 #endif
62 #ifdef V8_TARGET_ARCH_X64 62 #if V8_TARGET_ARCH_X64
63 #include "x64/assembler-x64.h" 63 #include "x64/assembler-x64.h"
64 #include "x64/macro-assembler-x64.h" 64 #include "x64/macro-assembler-x64.h"
65 #include "x64/regexp-macro-assembler-x64.h" 65 #include "x64/regexp-macro-assembler-x64.h"
66 #endif 66 #endif
67 #ifdef V8_TARGET_ARCH_IA32 67 #if V8_TARGET_ARCH_IA32
68 #include "ia32/assembler-ia32.h" 68 #include "ia32/assembler-ia32.h"
69 #include "ia32/macro-assembler-ia32.h" 69 #include "ia32/macro-assembler-ia32.h"
70 #include "ia32/regexp-macro-assembler-ia32.h" 70 #include "ia32/regexp-macro-assembler-ia32.h"
71 #endif 71 #endif
72 #endif // V8_INTERPRETED_REGEXP 72 #endif // V8_INTERPRETED_REGEXP
73 73
74 using namespace v8::internal; 74 using namespace v8::internal;
75 75
76 76
77 static bool CheckParse(const char* input) { 77 static bool CheckParse(const char* input) {
(...skipping 14 matching lines...) Expand all
92 FlatStringReader reader(Isolate::Current(), CStrVector(input)); 92 FlatStringReader reader(Isolate::Current(), CStrVector(input));
93 RegExpCompileData result; 93 RegExpCompileData result;
94 CHECK(v8::internal::RegExpParser::ParseRegExp( 94 CHECK(v8::internal::RegExpParser::ParseRegExp(
95 &reader, false, &result, &zone)); 95 &reader, false, &result, &zone));
96 CHECK(result.tree != NULL); 96 CHECK(result.tree != NULL);
97 CHECK(result.error.is_null()); 97 CHECK(result.error.is_null());
98 SmartArrayPointer<const char> output = result.tree->ToString(&zone); 98 SmartArrayPointer<const char> output = result.tree->ToString(&zone);
99 return output; 99 return output;
100 } 100 }
101 101
102
102 static bool CheckSimple(const char* input) { 103 static bool CheckSimple(const char* input) {
103 V8::Initialize(NULL); 104 V8::Initialize(NULL);
104 v8::HandleScope scope(v8::Isolate::GetCurrent()); 105 v8::HandleScope scope(v8::Isolate::GetCurrent());
105 Zone zone(Isolate::Current()); 106 Zone zone(Isolate::Current());
106 FlatStringReader reader(Isolate::Current(), CStrVector(input)); 107 FlatStringReader reader(Isolate::Current(), CStrVector(input));
107 RegExpCompileData result; 108 RegExpCompileData result;
108 CHECK(v8::internal::RegExpParser::ParseRegExp( 109 CHECK(v8::internal::RegExpParser::ParseRegExp(
109 &reader, false, &result, &zone)); 110 &reader, false, &result, &zone));
110 CHECK(result.tree != NULL); 111 CHECK(result.tree != NULL);
111 CHECK(result.error.is_null()); 112 CHECK(result.error.is_null());
112 return result.simple; 113 return result.simple;
113 } 114 }
114 115
115 struct MinMaxPair { 116 struct MinMaxPair {
116 int min_match; 117 int min_match;
117 int max_match; 118 int max_match;
118 }; 119 };
119 120
121
120 static MinMaxPair CheckMinMaxMatch(const char* input) { 122 static MinMaxPair CheckMinMaxMatch(const char* input) {
121 V8::Initialize(NULL); 123 V8::Initialize(NULL);
122 v8::HandleScope scope(v8::Isolate::GetCurrent()); 124 v8::HandleScope scope(v8::Isolate::GetCurrent());
123 Zone zone(Isolate::Current()); 125 Zone zone(Isolate::Current());
124 FlatStringReader reader(Isolate::Current(), CStrVector(input)); 126 FlatStringReader reader(Isolate::Current(), CStrVector(input));
125 RegExpCompileData result; 127 RegExpCompileData result;
126 CHECK(v8::internal::RegExpParser::ParseRegExp( 128 CHECK(v8::internal::RegExpParser::ParseRegExp(
127 &reader, false, &result, &zone)); 129 &reader, false, &result, &zone));
128 CHECK(result.tree != NULL); 130 CHECK(result.tree != NULL);
129 CHECK(result.error.is_null()); 131 CHECK(result.error.is_null());
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after
375 CHECK_MIN_MAX("(?:ab){4,7}", 8, 14); 377 CHECK_MIN_MAX("(?:ab){4,7}", 8, 14);
376 CHECK_MIN_MAX("a\\bc", 2, 2); 378 CHECK_MIN_MAX("a\\bc", 2, 2);
377 CHECK_MIN_MAX("a\\Bc", 2, 2); 379 CHECK_MIN_MAX("a\\Bc", 2, 2);
378 CHECK_MIN_MAX("a\\sc", 3, 3); 380 CHECK_MIN_MAX("a\\sc", 3, 3);
379 CHECK_MIN_MAX("a\\Sc", 3, 3); 381 CHECK_MIN_MAX("a\\Sc", 3, 3);
380 CHECK_MIN_MAX("a(?=b)c", 2, 2); 382 CHECK_MIN_MAX("a(?=b)c", 2, 2);
381 CHECK_MIN_MAX("a(?=bbb|bb)c", 2, 2); 383 CHECK_MIN_MAX("a(?=bbb|bb)c", 2, 2);
382 CHECK_MIN_MAX("a(?!bbb|bb)c", 2, 2); 384 CHECK_MIN_MAX("a(?!bbb|bb)c", 2, 2);
383 } 385 }
384 386
387
385 TEST(ParserRegression) { 388 TEST(ParserRegression) {
386 CHECK_PARSE_EQ("[A-Z$-][x]", "(! [A-Z $ -] [x])"); 389 CHECK_PARSE_EQ("[A-Z$-][x]", "(! [A-Z $ -] [x])");
387 CHECK_PARSE_EQ("a{3,4*}", "(: 'a{3,' (# 0 - g '4') '}')"); 390 CHECK_PARSE_EQ("a{3,4*}", "(: 'a{3,' (# 0 - g '4') '}')");
388 CHECK_PARSE_EQ("{", "'{'"); 391 CHECK_PARSE_EQ("{", "'{'");
389 CHECK_PARSE_EQ("a|", "(| 'a' %)"); 392 CHECK_PARSE_EQ("a|", "(| 'a' %)");
390 } 393 }
391 394
392 static void ExpectError(const char* input, 395 static void ExpectError(const char* input,
393 const char* expected) { 396 const char* expected) {
394 V8::Initialize(NULL); 397 V8::Initialize(NULL);
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
657 for (int j = 0; j < kRangeCount; j++) { 660 for (int j = 0; j < kRangeCount; j++) {
658 uc16* range = ranges[j]; 661 uc16* range = ranges[j];
659 bool is_on = false; 662 bool is_on = false;
660 for (int k = 0; !is_on && (k < 2 * kRangeSize); k += 2) 663 for (int k = 0; !is_on && (k < 2 * kRangeSize); k += 2)
661 is_on = (range[k] <= p && p <= range[k + 1]); 664 is_on = (range[k] <= p && p <= range[k + 1]);
662 CHECK_EQ(is_on, outs->Get(j)); 665 CHECK_EQ(is_on, outs->Get(j));
663 } 666 }
664 } 667 }
665 } 668 }
666 669
670
667 // Test of debug-only syntax. 671 // Test of debug-only syntax.
668 #ifdef DEBUG 672 #ifdef DEBUG
669 673
670 TEST(ParsePossessiveRepetition) { 674 TEST(ParsePossessiveRepetition) {
671 bool old_flag_value = FLAG_regexp_possessive_quantifier; 675 bool old_flag_value = FLAG_regexp_possessive_quantifier;
672 676
673 // Enable possessive quantifier syntax. 677 // Enable possessive quantifier syntax.
674 FLAG_regexp_possessive_quantifier = true; 678 FLAG_regexp_possessive_quantifier = true;
675 679
676 CHECK_PARSE_EQ("a*+", "(# 0 - p 'a')"); 680 CHECK_PARSE_EQ("a*+", "(# 0 - p 'a')");
(...skipping 1136 matching lines...) Expand 10 before | Expand all | Expand 10 after
1813 ZoneList<CharacterRange> first_only(4, &zone); 1817 ZoneList<CharacterRange> first_only(4, &zone);
1814 ZoneList<CharacterRange> second_only(4, &zone); 1818 ZoneList<CharacterRange> second_only(4, &zone);
1815 ZoneList<CharacterRange> both(4, &zone); 1819 ZoneList<CharacterRange> both(4, &zone);
1816 } 1820 }
1817 1821
1818 1822
1819 TEST(Graph) { 1823 TEST(Graph) {
1820 V8::Initialize(NULL); 1824 V8::Initialize(NULL);
1821 Execute("\\b\\w+\\b", false, true, true); 1825 Execute("\\b\\w+\\b", false, true, true);
1822 } 1826 }
OLDNEW
« no previous file with comments | « test/cctest/test-profile-generator.cc ('k') | test/cctest/test-thread-termination.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698