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

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

Issue 2394213003: Named all zones in the project (Closed)
Patch Set: Merge branch 'master' into zonenames Created 4 years, 2 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
« no previous file with comments | « test/cctest/test-parsing.cc ('k') | test/cctest/test-run-wasm-relocation-ia32.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 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 #include "src/x87/macro-assembler-x87.h" 91 #include "src/x87/macro-assembler-x87.h"
92 #endif 92 #endif
93 #endif // V8_INTERPRETED_REGEXP 93 #endif // V8_INTERPRETED_REGEXP
94 #include "test/cctest/cctest.h" 94 #include "test/cctest/cctest.h"
95 95
96 using namespace v8::internal; 96 using namespace v8::internal;
97 97
98 98
99 static bool CheckParse(const char* input) { 99 static bool CheckParse(const char* input) {
100 v8::HandleScope scope(CcTest::isolate()); 100 v8::HandleScope scope(CcTest::isolate());
101 Zone zone(CcTest::i_isolate()->allocator()); 101 Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME);
102 FlatStringReader reader(CcTest::i_isolate(), CStrVector(input)); 102 FlatStringReader reader(CcTest::i_isolate(), CStrVector(input));
103 RegExpCompileData result; 103 RegExpCompileData result;
104 return v8::internal::RegExpParser::ParseRegExp( 104 return v8::internal::RegExpParser::ParseRegExp(
105 CcTest::i_isolate(), &zone, &reader, JSRegExp::kNone, &result); 105 CcTest::i_isolate(), &zone, &reader, JSRegExp::kNone, &result);
106 } 106 }
107 107
108 108
109 static void CheckParseEq(const char* input, const char* expected, 109 static void CheckParseEq(const char* input, const char* expected,
110 bool unicode = false) { 110 bool unicode = false) {
111 v8::HandleScope scope(CcTest::isolate()); 111 v8::HandleScope scope(CcTest::isolate());
112 Zone zone(CcTest::i_isolate()->allocator()); 112 Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME);
113 FlatStringReader reader(CcTest::i_isolate(), CStrVector(input)); 113 FlatStringReader reader(CcTest::i_isolate(), CStrVector(input));
114 RegExpCompileData result; 114 RegExpCompileData result;
115 JSRegExp::Flags flags = JSRegExp::kNone; 115 JSRegExp::Flags flags = JSRegExp::kNone;
116 if (unicode) flags |= JSRegExp::kUnicode; 116 if (unicode) flags |= JSRegExp::kUnicode;
117 CHECK(v8::internal::RegExpParser::ParseRegExp(CcTest::i_isolate(), &zone, 117 CHECK(v8::internal::RegExpParser::ParseRegExp(CcTest::i_isolate(), &zone,
118 &reader, flags, &result)); 118 &reader, flags, &result));
119 CHECK(result.tree != NULL); 119 CHECK(result.tree != NULL);
120 CHECK(result.error.is_null()); 120 CHECK(result.error.is_null());
121 std::ostringstream os; 121 std::ostringstream os;
122 result.tree->Print(os, &zone); 122 result.tree->Print(os, &zone);
123 if (strcmp(expected, os.str().c_str()) != 0) { 123 if (strcmp(expected, os.str().c_str()) != 0) {
124 printf("%s | %s\n", expected, os.str().c_str()); 124 printf("%s | %s\n", expected, os.str().c_str());
125 } 125 }
126 CHECK_EQ(0, strcmp(expected, os.str().c_str())); 126 CHECK_EQ(0, strcmp(expected, os.str().c_str()));
127 } 127 }
128 128
129 129
130 static bool CheckSimple(const char* input) { 130 static bool CheckSimple(const char* input) {
131 v8::HandleScope scope(CcTest::isolate()); 131 v8::HandleScope scope(CcTest::isolate());
132 Zone zone(CcTest::i_isolate()->allocator()); 132 Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME);
133 FlatStringReader reader(CcTest::i_isolate(), CStrVector(input)); 133 FlatStringReader reader(CcTest::i_isolate(), CStrVector(input));
134 RegExpCompileData result; 134 RegExpCompileData result;
135 CHECK(v8::internal::RegExpParser::ParseRegExp( 135 CHECK(v8::internal::RegExpParser::ParseRegExp(
136 CcTest::i_isolate(), &zone, &reader, JSRegExp::kNone, &result)); 136 CcTest::i_isolate(), &zone, &reader, JSRegExp::kNone, &result));
137 CHECK(result.tree != NULL); 137 CHECK(result.tree != NULL);
138 CHECK(result.error.is_null()); 138 CHECK(result.error.is_null());
139 return result.simple; 139 return result.simple;
140 } 140 }
141 141
142 struct MinMaxPair { 142 struct MinMaxPair {
143 int min_match; 143 int min_match;
144 int max_match; 144 int max_match;
145 }; 145 };
146 146
147 147
148 static MinMaxPair CheckMinMaxMatch(const char* input) { 148 static MinMaxPair CheckMinMaxMatch(const char* input) {
149 v8::HandleScope scope(CcTest::isolate()); 149 v8::HandleScope scope(CcTest::isolate());
150 Zone zone(CcTest::i_isolate()->allocator()); 150 Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME);
151 FlatStringReader reader(CcTest::i_isolate(), CStrVector(input)); 151 FlatStringReader reader(CcTest::i_isolate(), CStrVector(input));
152 RegExpCompileData result; 152 RegExpCompileData result;
153 CHECK(v8::internal::RegExpParser::ParseRegExp( 153 CHECK(v8::internal::RegExpParser::ParseRegExp(
154 CcTest::i_isolate(), &zone, &reader, JSRegExp::kNone, &result)); 154 CcTest::i_isolate(), &zone, &reader, JSRegExp::kNone, &result));
155 CHECK(result.tree != NULL); 155 CHECK(result.tree != NULL);
156 CHECK(result.error.is_null()); 156 CHECK(result.error.is_null());
157 int min_match = result.tree->min_match(); 157 int min_match = result.tree->min_match();
158 int max_match = result.tree->max_match(); 158 int max_match = result.tree->max_match();
159 MinMaxPair pair = { min_match, max_match }; 159 MinMaxPair pair = { min_match, max_match };
160 return pair; 160 return pair;
(...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after
470 TEST(ParserRegression) { 470 TEST(ParserRegression) {
471 CheckParseEq("[A-Z$-][x]", "(! [A-Z $ -] [x])"); 471 CheckParseEq("[A-Z$-][x]", "(! [A-Z $ -] [x])");
472 CheckParseEq("a{3,4*}", "(: 'a{3,' (# 0 - g '4') '}')"); 472 CheckParseEq("a{3,4*}", "(: 'a{3,' (# 0 - g '4') '}')");
473 CheckParseEq("{", "'{'"); 473 CheckParseEq("{", "'{'");
474 CheckParseEq("a|", "(| 'a' %)"); 474 CheckParseEq("a|", "(| 'a' %)");
475 } 475 }
476 476
477 static void ExpectError(const char* input, const char* expected, 477 static void ExpectError(const char* input, const char* expected,
478 bool unicode = false) { 478 bool unicode = false) {
479 v8::HandleScope scope(CcTest::isolate()); 479 v8::HandleScope scope(CcTest::isolate());
480 Zone zone(CcTest::i_isolate()->allocator()); 480 Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME);
481 FlatStringReader reader(CcTest::i_isolate(), CStrVector(input)); 481 FlatStringReader reader(CcTest::i_isolate(), CStrVector(input));
482 RegExpCompileData result; 482 RegExpCompileData result;
483 JSRegExp::Flags flags = JSRegExp::kNone; 483 JSRegExp::Flags flags = JSRegExp::kNone;
484 if (unicode) flags |= JSRegExp::kUnicode; 484 if (unicode) flags |= JSRegExp::kUnicode;
485 CHECK(!v8::internal::RegExpParser::ParseRegExp(CcTest::i_isolate(), &zone, 485 CHECK(!v8::internal::RegExpParser::ParseRegExp(CcTest::i_isolate(), &zone,
486 &reader, flags, &result)); 486 &reader, flags, &result));
487 CHECK(result.tree == NULL); 487 CHECK(result.tree == NULL);
488 CHECK(!result.error.is_null()); 488 CHECK(!result.error.is_null());
489 std::unique_ptr<char[]> str = result.error->ToCString(ALLOW_NULLS); 489 std::unique_ptr<char[]> str = result.error->ToCString(ALLOW_NULLS);
490 CHECK_EQ(0, strcmp(expected, str.get())); 490 CHECK_EQ(0, strcmp(expected, str.get()));
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
558 return !IsWhiteSpaceOrLineTerminator(c); 558 return !IsWhiteSpaceOrLineTerminator(c);
559 } 559 }
560 560
561 561
562 static bool NotWord(uc16 c) { 562 static bool NotWord(uc16 c) {
563 return !IsRegExpWord(c); 563 return !IsRegExpWord(c);
564 } 564 }
565 565
566 566
567 static void TestCharacterClassEscapes(uc16 c, bool (pred)(uc16 c)) { 567 static void TestCharacterClassEscapes(uc16 c, bool (pred)(uc16 c)) {
568 Zone zone(CcTest::i_isolate()->allocator()); 568 Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME);
569 ZoneList<CharacterRange>* ranges = 569 ZoneList<CharacterRange>* ranges =
570 new(&zone) ZoneList<CharacterRange>(2, &zone); 570 new(&zone) ZoneList<CharacterRange>(2, &zone);
571 CharacterRange::AddClassEscape(c, ranges, &zone); 571 CharacterRange::AddClassEscape(c, ranges, &zone);
572 for (uc32 i = 0; i < (1 << 16); i++) { 572 for (uc32 i = 0; i < (1 << 16); i++) {
573 bool in_class = false; 573 bool in_class = false;
574 for (int j = 0; !in_class && j < ranges->length(); j++) { 574 for (int j = 0; !in_class && j < ranges->length(); j++) {
575 CharacterRange& range = ranges->at(j); 575 CharacterRange& range = ranges->at(j);
576 in_class = (range.from() <= i && i <= range.to()); 576 in_class = (range.from() <= i && i <= range.to());
577 } 577 }
578 CHECK_EQ(pred(i), in_class); 578 CHECK_EQ(pred(i), in_class);
(...skipping 30 matching lines...) Expand all
609 isolate->factory()->NewStringFromUtf8(CStrVector("")).ToHandleChecked(); 609 isolate->factory()->NewStringFromUtf8(CStrVector("")).ToHandleChecked();
610 RegExpEngine::Compile(isolate, zone, &compile_data, flags, pattern, 610 RegExpEngine::Compile(isolate, zone, &compile_data, flags, pattern,
611 sample_subject, is_one_byte); 611 sample_subject, is_one_byte);
612 return compile_data.node; 612 return compile_data.node;
613 } 613 }
614 614
615 615
616 static void Execute(const char* input, bool multiline, bool unicode, 616 static void Execute(const char* input, bool multiline, bool unicode,
617 bool is_one_byte, bool dot_output = false) { 617 bool is_one_byte, bool dot_output = false) {
618 v8::HandleScope scope(CcTest::isolate()); 618 v8::HandleScope scope(CcTest::isolate());
619 Zone zone(CcTest::i_isolate()->allocator()); 619 Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME);
620 RegExpNode* node = Compile(input, multiline, unicode, is_one_byte, &zone); 620 RegExpNode* node = Compile(input, multiline, unicode, is_one_byte, &zone);
621 USE(node); 621 USE(node);
622 #ifdef DEBUG 622 #ifdef DEBUG
623 if (dot_output) { 623 if (dot_output) {
624 RegExpEngine::DotPrint(input, node, false); 624 RegExpEngine::DotPrint(input, node, false);
625 } 625 }
626 #endif // DEBUG 626 #endif // DEBUG
627 } 627 }
628 628
629 629
(...skipping 17 matching lines...) Expand all
647 const int TestConfig::kNoKey = 0; 647 const int TestConfig::kNoKey = 0;
648 648
649 649
650 static unsigned PseudoRandom(int i, int j) { 650 static unsigned PseudoRandom(int i, int j) {
651 return ~(~((i * 781) ^ (j * 329))); 651 return ~(~((i * 781) ^ (j * 329)));
652 } 652 }
653 653
654 654
655 TEST(SplayTreeSimple) { 655 TEST(SplayTreeSimple) {
656 static const unsigned kLimit = 1000; 656 static const unsigned kLimit = 1000;
657 Zone zone(CcTest::i_isolate()->allocator()); 657 Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME);
658 ZoneSplayTree<TestConfig> tree(&zone); 658 ZoneSplayTree<TestConfig> tree(&zone);
659 bool seen[kLimit]; 659 bool seen[kLimit];
660 for (unsigned i = 0; i < kLimit; i++) seen[i] = false; 660 for (unsigned i = 0; i < kLimit; i++) seen[i] = false;
661 #define CHECK_MAPS_EQUAL() do { \ 661 #define CHECK_MAPS_EQUAL() do { \
662 for (unsigned k = 0; k < kLimit; k++) \ 662 for (unsigned k = 0; k < kLimit; k++) \
663 CHECK_EQ(seen[k], tree.Find(k, &loc)); \ 663 CHECK_EQ(seen[k], tree.Find(k, &loc)); \
664 } while (false) 664 } while (false)
665 for (int i = 0; i < 50; i++) { 665 for (int i = 0; i < 50; i++) {
666 for (int j = 0; j < 50; j++) { 666 for (int j = 0; j < 50; j++) {
667 int next = PseudoRandom(i, j) % kLimit; 667 int next = PseudoRandom(i, j) % kLimit;
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
714 Vector<uc16> range(ranges[i], 2 * kRangeSize); 714 Vector<uc16> range(ranges[i], 2 * kRangeSize);
715 for (int j = 0; j < 2 * kRangeSize; j++) { 715 for (int j = 0; j < 2 * kRangeSize; j++) {
716 range[j] = PseudoRandom(i + 25, j + 87) % kLimit; 716 range[j] = PseudoRandom(i + 25, j + 87) % kLimit;
717 } 717 }
718 range.Sort(); 718 range.Sort();
719 for (int j = 1; j < 2 * kRangeSize; j++) { 719 for (int j = 1; j < 2 * kRangeSize; j++) {
720 CHECK(range[j-1] <= range[j]); 720 CHECK(range[j-1] <= range[j]);
721 } 721 }
722 } 722 }
723 // Enter test data into dispatch table. 723 // Enter test data into dispatch table.
724 Zone zone(CcTest::i_isolate()->allocator()); 724 Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME);
725 DispatchTable table(&zone); 725 DispatchTable table(&zone);
726 for (int i = 0; i < kRangeCount; i++) { 726 for (int i = 0; i < kRangeCount; i++) {
727 uc16* range = ranges[i]; 727 uc16* range = ranges[i];
728 for (int j = 0; j < 2 * kRangeSize; j += 2) 728 for (int j = 0; j < 2 * kRangeSize; j += 2)
729 table.AddRange(CharacterRange::Range(range[j], range[j + 1]), i, &zone); 729 table.AddRange(CharacterRange::Range(range[j], range[j + 1]), i, &zone);
730 } 730 }
731 // Check that the table looks as we would expect 731 // Check that the table looks as we would expect
732 for (int p = 0; p < kLimit; p++) { 732 for (int p = 0; p < kLimit; p++) {
733 OutSet* outs = table.Get(p); 733 OutSet* outs = table.Get(p);
734 for (int j = 0; j < kRangeCount; j++) { 734 for (int j = 0; j < kRangeCount; j++) {
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
828 0, 828 0,
829 CcTest::i_isolate()); 829 CcTest::i_isolate());
830 } 830 }
831 831
832 832
833 TEST(MacroAssemblerNativeSuccess) { 833 TEST(MacroAssemblerNativeSuccess) {
834 v8::V8::Initialize(); 834 v8::V8::Initialize();
835 ContextInitializer initializer; 835 ContextInitializer initializer;
836 Isolate* isolate = CcTest::i_isolate(); 836 Isolate* isolate = CcTest::i_isolate();
837 Factory* factory = isolate->factory(); 837 Factory* factory = isolate->factory();
838 Zone zone(CcTest::i_isolate()->allocator()); 838 Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME);
839 839
840 ArchRegExpMacroAssembler m(isolate, &zone, NativeRegExpMacroAssembler::LATIN1, 840 ArchRegExpMacroAssembler m(isolate, &zone, NativeRegExpMacroAssembler::LATIN1,
841 4); 841 4);
842 842
843 m.Succeed(); 843 m.Succeed();
844 844
845 Handle<String> source = factory->NewStringFromStaticChars(""); 845 Handle<String> source = factory->NewStringFromStaticChars("");
846 Handle<Object> code_object = m.GetCode(source); 846 Handle<Object> code_object = m.GetCode(source);
847 Handle<Code> code = Handle<Code>::cast(code_object); 847 Handle<Code> code = Handle<Code>::cast(code_object);
848 848
(...skipping 17 matching lines...) Expand all
866 CHECK_EQ(-1, captures[2]); 866 CHECK_EQ(-1, captures[2]);
867 CHECK_EQ(-1, captures[3]); 867 CHECK_EQ(-1, captures[3]);
868 } 868 }
869 869
870 870
871 TEST(MacroAssemblerNativeSimple) { 871 TEST(MacroAssemblerNativeSimple) {
872 v8::V8::Initialize(); 872 v8::V8::Initialize();
873 ContextInitializer initializer; 873 ContextInitializer initializer;
874 Isolate* isolate = CcTest::i_isolate(); 874 Isolate* isolate = CcTest::i_isolate();
875 Factory* factory = isolate->factory(); 875 Factory* factory = isolate->factory();
876 Zone zone(CcTest::i_isolate()->allocator()); 876 Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME);
877 877
878 ArchRegExpMacroAssembler m(isolate, &zone, NativeRegExpMacroAssembler::LATIN1, 878 ArchRegExpMacroAssembler m(isolate, &zone, NativeRegExpMacroAssembler::LATIN1,
879 4); 879 4);
880 880
881 Label fail, backtrack; 881 Label fail, backtrack;
882 m.PushBacktrack(&fail); 882 m.PushBacktrack(&fail);
883 m.CheckNotAtStart(0, NULL); 883 m.CheckNotAtStart(0, NULL);
884 m.LoadCurrentCharacter(2, NULL); 884 m.LoadCurrentCharacter(2, NULL);
885 m.CheckNotCharacter('o', NULL); 885 m.CheckNotCharacter('o', NULL);
886 m.LoadCurrentCharacter(1, NULL, false); 886 m.LoadCurrentCharacter(1, NULL, false);
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
933 933
934 CHECK_EQ(NativeRegExpMacroAssembler::FAILURE, result); 934 CHECK_EQ(NativeRegExpMacroAssembler::FAILURE, result);
935 } 935 }
936 936
937 937
938 TEST(MacroAssemblerNativeSimpleUC16) { 938 TEST(MacroAssemblerNativeSimpleUC16) {
939 v8::V8::Initialize(); 939 v8::V8::Initialize();
940 ContextInitializer initializer; 940 ContextInitializer initializer;
941 Isolate* isolate = CcTest::i_isolate(); 941 Isolate* isolate = CcTest::i_isolate();
942 Factory* factory = isolate->factory(); 942 Factory* factory = isolate->factory();
943 Zone zone(CcTest::i_isolate()->allocator()); 943 Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME);
944 944
945 ArchRegExpMacroAssembler m(isolate, &zone, NativeRegExpMacroAssembler::UC16, 945 ArchRegExpMacroAssembler m(isolate, &zone, NativeRegExpMacroAssembler::UC16,
946 4); 946 4);
947 947
948 Label fail, backtrack; 948 Label fail, backtrack;
949 m.PushBacktrack(&fail); 949 m.PushBacktrack(&fail);
950 m.CheckNotAtStart(0, NULL); 950 m.CheckNotAtStart(0, NULL);
951 m.LoadCurrentCharacter(2, NULL); 951 m.LoadCurrentCharacter(2, NULL);
952 m.CheckNotCharacter('o', NULL); 952 m.CheckNotCharacter('o', NULL);
953 m.LoadCurrentCharacter(1, NULL, false); 953 m.LoadCurrentCharacter(1, NULL, false);
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
1006 1006
1007 CHECK_EQ(NativeRegExpMacroAssembler::FAILURE, result); 1007 CHECK_EQ(NativeRegExpMacroAssembler::FAILURE, result);
1008 } 1008 }
1009 1009
1010 1010
1011 TEST(MacroAssemblerNativeBacktrack) { 1011 TEST(MacroAssemblerNativeBacktrack) {
1012 v8::V8::Initialize(); 1012 v8::V8::Initialize();
1013 ContextInitializer initializer; 1013 ContextInitializer initializer;
1014 Isolate* isolate = CcTest::i_isolate(); 1014 Isolate* isolate = CcTest::i_isolate();
1015 Factory* factory = isolate->factory(); 1015 Factory* factory = isolate->factory();
1016 Zone zone(CcTest::i_isolate()->allocator()); 1016 Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME);
1017 1017
1018 ArchRegExpMacroAssembler m(isolate, &zone, NativeRegExpMacroAssembler::LATIN1, 1018 ArchRegExpMacroAssembler m(isolate, &zone, NativeRegExpMacroAssembler::LATIN1,
1019 0); 1019 0);
1020 1020
1021 Label fail; 1021 Label fail;
1022 Label backtrack; 1022 Label backtrack;
1023 m.LoadCurrentCharacter(10, &fail); 1023 m.LoadCurrentCharacter(10, &fail);
1024 m.Succeed(); 1024 m.Succeed();
1025 m.Bind(&fail); 1025 m.Bind(&fail);
1026 m.PushBacktrack(&backtrack); 1026 m.PushBacktrack(&backtrack);
(...skipping 20 matching lines...) Expand all
1047 1047
1048 CHECK_EQ(NativeRegExpMacroAssembler::FAILURE, result); 1048 CHECK_EQ(NativeRegExpMacroAssembler::FAILURE, result);
1049 } 1049 }
1050 1050
1051 1051
1052 TEST(MacroAssemblerNativeBackReferenceLATIN1) { 1052 TEST(MacroAssemblerNativeBackReferenceLATIN1) {
1053 v8::V8::Initialize(); 1053 v8::V8::Initialize();
1054 ContextInitializer initializer; 1054 ContextInitializer initializer;
1055 Isolate* isolate = CcTest::i_isolate(); 1055 Isolate* isolate = CcTest::i_isolate();
1056 Factory* factory = isolate->factory(); 1056 Factory* factory = isolate->factory();
1057 Zone zone(CcTest::i_isolate()->allocator()); 1057 Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME);
1058 1058
1059 ArchRegExpMacroAssembler m(isolate, &zone, NativeRegExpMacroAssembler::LATIN1, 1059 ArchRegExpMacroAssembler m(isolate, &zone, NativeRegExpMacroAssembler::LATIN1,
1060 4); 1060 4);
1061 1061
1062 m.WriteCurrentPositionToRegister(0, 0); 1062 m.WriteCurrentPositionToRegister(0, 0);
1063 m.AdvanceCurrentPosition(2); 1063 m.AdvanceCurrentPosition(2);
1064 m.WriteCurrentPositionToRegister(1, 0); 1064 m.WriteCurrentPositionToRegister(1, 0);
1065 Label nomatch; 1065 Label nomatch;
1066 m.CheckNotBackReference(0, false, &nomatch); 1066 m.CheckNotBackReference(0, false, &nomatch);
1067 m.Fail(); 1067 m.Fail();
(...skipping 29 matching lines...) Expand all
1097 CHECK_EQ(6, output[2]); 1097 CHECK_EQ(6, output[2]);
1098 CHECK_EQ(-1, output[3]); 1098 CHECK_EQ(-1, output[3]);
1099 } 1099 }
1100 1100
1101 1101
1102 TEST(MacroAssemblerNativeBackReferenceUC16) { 1102 TEST(MacroAssemblerNativeBackReferenceUC16) {
1103 v8::V8::Initialize(); 1103 v8::V8::Initialize();
1104 ContextInitializer initializer; 1104 ContextInitializer initializer;
1105 Isolate* isolate = CcTest::i_isolate(); 1105 Isolate* isolate = CcTest::i_isolate();
1106 Factory* factory = isolate->factory(); 1106 Factory* factory = isolate->factory();
1107 Zone zone(CcTest::i_isolate()->allocator()); 1107 Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME);
1108 1108
1109 ArchRegExpMacroAssembler m(isolate, &zone, NativeRegExpMacroAssembler::UC16, 1109 ArchRegExpMacroAssembler m(isolate, &zone, NativeRegExpMacroAssembler::UC16,
1110 4); 1110 4);
1111 1111
1112 m.WriteCurrentPositionToRegister(0, 0); 1112 m.WriteCurrentPositionToRegister(0, 0);
1113 m.AdvanceCurrentPosition(2); 1113 m.AdvanceCurrentPosition(2);
1114 m.WriteCurrentPositionToRegister(1, 0); 1114 m.WriteCurrentPositionToRegister(1, 0);
1115 Label nomatch; 1115 Label nomatch;
1116 m.CheckNotBackReference(0, false, &nomatch); 1116 m.CheckNotBackReference(0, false, &nomatch);
1117 m.Fail(); 1117 m.Fail();
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
1150 CHECK_EQ(-1, output[3]); 1150 CHECK_EQ(-1, output[3]);
1151 } 1151 }
1152 1152
1153 1153
1154 1154
1155 TEST(MacroAssemblernativeAtStart) { 1155 TEST(MacroAssemblernativeAtStart) {
1156 v8::V8::Initialize(); 1156 v8::V8::Initialize();
1157 ContextInitializer initializer; 1157 ContextInitializer initializer;
1158 Isolate* isolate = CcTest::i_isolate(); 1158 Isolate* isolate = CcTest::i_isolate();
1159 Factory* factory = isolate->factory(); 1159 Factory* factory = isolate->factory();
1160 Zone zone(CcTest::i_isolate()->allocator()); 1160 Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME);
1161 1161
1162 ArchRegExpMacroAssembler m(isolate, &zone, NativeRegExpMacroAssembler::LATIN1, 1162 ArchRegExpMacroAssembler m(isolate, &zone, NativeRegExpMacroAssembler::LATIN1,
1163 0); 1163 0);
1164 1164
1165 Label not_at_start, newline, fail; 1165 Label not_at_start, newline, fail;
1166 m.CheckNotAtStart(0, &not_at_start); 1166 m.CheckNotAtStart(0, &not_at_start);
1167 // Check that prevchar = '\n' and current = 'f'. 1167 // Check that prevchar = '\n' and current = 'f'.
1168 m.CheckCharacter('\n', &newline); 1168 m.CheckCharacter('\n', &newline);
1169 m.Bind(&fail); 1169 m.Bind(&fail);
1170 m.Fail(); 1170 m.Fail();
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
1210 1210
1211 CHECK_EQ(NativeRegExpMacroAssembler::SUCCESS, result); 1211 CHECK_EQ(NativeRegExpMacroAssembler::SUCCESS, result);
1212 } 1212 }
1213 1213
1214 1214
1215 TEST(MacroAssemblerNativeBackRefNoCase) { 1215 TEST(MacroAssemblerNativeBackRefNoCase) {
1216 v8::V8::Initialize(); 1216 v8::V8::Initialize();
1217 ContextInitializer initializer; 1217 ContextInitializer initializer;
1218 Isolate* isolate = CcTest::i_isolate(); 1218 Isolate* isolate = CcTest::i_isolate();
1219 Factory* factory = isolate->factory(); 1219 Factory* factory = isolate->factory();
1220 Zone zone(CcTest::i_isolate()->allocator()); 1220 Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME);
1221 1221
1222 ArchRegExpMacroAssembler m(isolate, &zone, NativeRegExpMacroAssembler::LATIN1, 1222 ArchRegExpMacroAssembler m(isolate, &zone, NativeRegExpMacroAssembler::LATIN1,
1223 4); 1223 4);
1224 1224
1225 Label fail, succ; 1225 Label fail, succ;
1226 1226
1227 m.WriteCurrentPositionToRegister(0, 0); 1227 m.WriteCurrentPositionToRegister(0, 0);
1228 m.WriteCurrentPositionToRegister(2, 0); 1228 m.WriteCurrentPositionToRegister(2, 0);
1229 m.AdvanceCurrentPosition(3); 1229 m.AdvanceCurrentPosition(3);
1230 m.WriteCurrentPositionToRegister(3, 0); 1230 m.WriteCurrentPositionToRegister(3, 0);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1269 CHECK_EQ(3, output[3]); 1269 CHECK_EQ(3, output[3]);
1270 } 1270 }
1271 1271
1272 1272
1273 1273
1274 TEST(MacroAssemblerNativeRegisters) { 1274 TEST(MacroAssemblerNativeRegisters) {
1275 v8::V8::Initialize(); 1275 v8::V8::Initialize();
1276 ContextInitializer initializer; 1276 ContextInitializer initializer;
1277 Isolate* isolate = CcTest::i_isolate(); 1277 Isolate* isolate = CcTest::i_isolate();
1278 Factory* factory = isolate->factory(); 1278 Factory* factory = isolate->factory();
1279 Zone zone(CcTest::i_isolate()->allocator()); 1279 Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME);
1280 1280
1281 ArchRegExpMacroAssembler m(isolate, &zone, NativeRegExpMacroAssembler::LATIN1, 1281 ArchRegExpMacroAssembler m(isolate, &zone, NativeRegExpMacroAssembler::LATIN1,
1282 6); 1282 6);
1283 1283
1284 uc16 foo_chars[3] = {'f', 'o', 'o'}; 1284 uc16 foo_chars[3] = {'f', 'o', 'o'};
1285 Vector<const uc16> foo(foo_chars, 3); 1285 Vector<const uc16> foo(foo_chars, 3);
1286 1286
1287 enum registers { out1, out2, out3, out4, out5, out6, sp, loop_cnt }; 1287 enum registers { out1, out2, out3, out4, out5, out6, sp, loop_cnt };
1288 Label fail; 1288 Label fail;
1289 Label backtrack; 1289 Label backtrack;
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
1371 CHECK_EQ(9, output[4]); 1371 CHECK_EQ(9, output[4]);
1372 CHECK_EQ(-1, output[5]); 1372 CHECK_EQ(-1, output[5]);
1373 } 1373 }
1374 1374
1375 1375
1376 TEST(MacroAssemblerStackOverflow) { 1376 TEST(MacroAssemblerStackOverflow) {
1377 v8::V8::Initialize(); 1377 v8::V8::Initialize();
1378 ContextInitializer initializer; 1378 ContextInitializer initializer;
1379 Isolate* isolate = CcTest::i_isolate(); 1379 Isolate* isolate = CcTest::i_isolate();
1380 Factory* factory = isolate->factory(); 1380 Factory* factory = isolate->factory();
1381 Zone zone(CcTest::i_isolate()->allocator()); 1381 Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME);
1382 1382
1383 ArchRegExpMacroAssembler m(isolate, &zone, NativeRegExpMacroAssembler::LATIN1, 1383 ArchRegExpMacroAssembler m(isolate, &zone, NativeRegExpMacroAssembler::LATIN1,
1384 0); 1384 0);
1385 1385
1386 Label loop; 1386 Label loop;
1387 m.Bind(&loop); 1387 m.Bind(&loop);
1388 m.PushBacktrack(&loop); 1388 m.PushBacktrack(&loop);
1389 m.GoTo(&loop); 1389 m.GoTo(&loop);
1390 1390
1391 Handle<String> source = 1391 Handle<String> source =
(...skipping 18 matching lines...) Expand all
1410 CHECK(isolate->has_pending_exception()); 1410 CHECK(isolate->has_pending_exception());
1411 isolate->clear_pending_exception(); 1411 isolate->clear_pending_exception();
1412 } 1412 }
1413 1413
1414 1414
1415 TEST(MacroAssemblerNativeLotsOfRegisters) { 1415 TEST(MacroAssemblerNativeLotsOfRegisters) {
1416 v8::V8::Initialize(); 1416 v8::V8::Initialize();
1417 ContextInitializer initializer; 1417 ContextInitializer initializer;
1418 Isolate* isolate = CcTest::i_isolate(); 1418 Isolate* isolate = CcTest::i_isolate();
1419 Factory* factory = isolate->factory(); 1419 Factory* factory = isolate->factory();
1420 Zone zone(CcTest::i_isolate()->allocator()); 1420 Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME);
1421 1421
1422 ArchRegExpMacroAssembler m(isolate, &zone, NativeRegExpMacroAssembler::LATIN1, 1422 ArchRegExpMacroAssembler m(isolate, &zone, NativeRegExpMacroAssembler::LATIN1,
1423 2); 1423 2);
1424 1424
1425 // At least 2048, to ensure the allocated space for registers 1425 // At least 2048, to ensure the allocated space for registers
1426 // span one full page. 1426 // span one full page.
1427 const int large_number = 8000; 1427 const int large_number = 8000;
1428 m.WriteCurrentPositionToRegister(large_number, 42); 1428 m.WriteCurrentPositionToRegister(large_number, 42);
1429 m.WriteCurrentPositionToRegister(0, 0); 1429 m.WriteCurrentPositionToRegister(0, 0);
1430 m.WriteCurrentPositionToRegister(1, 1); 1430 m.WriteCurrentPositionToRegister(1, 1);
(...skipping 27 matching lines...) Expand all
1458 CHECK_EQ(0, captures[0]); 1458 CHECK_EQ(0, captures[0]);
1459 CHECK_EQ(42, captures[1]); 1459 CHECK_EQ(42, captures[1]);
1460 1460
1461 isolate->clear_pending_exception(); 1461 isolate->clear_pending_exception();
1462 } 1462 }
1463 1463
1464 #else // V8_INTERPRETED_REGEXP 1464 #else // V8_INTERPRETED_REGEXP
1465 1465
1466 TEST(MacroAssembler) { 1466 TEST(MacroAssembler) {
1467 byte codes[1024]; 1467 byte codes[1024];
1468 Zone zone(CcTest::i_isolate()->allocator()); 1468 Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME);
1469 RegExpMacroAssemblerIrregexp m(CcTest::i_isolate(), Vector<byte>(codes, 1024), 1469 RegExpMacroAssemblerIrregexp m(CcTest::i_isolate(), Vector<byte>(codes, 1024),
1470 &zone); 1470 &zone);
1471 // ^f(o)o. 1471 // ^f(o)o.
1472 Label start, fail, backtrack; 1472 Label start, fail, backtrack;
1473 1473
1474 m.SetRegister(4, 42); 1474 m.SetRegister(4, 42);
1475 m.PushRegister(4, RegExpMacroAssembler::kNoStackLimitCheck); 1475 m.PushRegister(4, RegExpMacroAssembler::kNoStackLimitCheck);
1476 m.AdvanceRegister(4, 42); 1476 m.AdvanceRegister(4, 42);
1477 m.GoTo(&start); 1477 m.GoTo(&start);
1478 m.Fail(); 1478 m.Fail();
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
1526 CHECK_EQ(42, captures[0]); 1526 CHECK_EQ(42, captures[0]);
1527 } 1527 }
1528 1528
1529 #endif // V8_INTERPRETED_REGEXP 1529 #endif // V8_INTERPRETED_REGEXP
1530 1530
1531 1531
1532 TEST(AddInverseToTable) { 1532 TEST(AddInverseToTable) {
1533 static const int kLimit = 1000; 1533 static const int kLimit = 1000;
1534 static const int kRangeCount = 16; 1534 static const int kRangeCount = 16;
1535 for (int t = 0; t < 10; t++) { 1535 for (int t = 0; t < 10; t++) {
1536 Zone zone(CcTest::i_isolate()->allocator()); 1536 Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME);
1537 ZoneList<CharacterRange>* ranges = 1537 ZoneList<CharacterRange>* ranges =
1538 new(&zone) ZoneList<CharacterRange>(kRangeCount, &zone); 1538 new(&zone) ZoneList<CharacterRange>(kRangeCount, &zone);
1539 for (int i = 0; i < kRangeCount; i++) { 1539 for (int i = 0; i < kRangeCount; i++) {
1540 int from = PseudoRandom(t + 87, i + 25) % kLimit; 1540 int from = PseudoRandom(t + 87, i + 25) % kLimit;
1541 int to = from + (PseudoRandom(i + 87, t + 25) % (kLimit / 20)); 1541 int to = from + (PseudoRandom(i + 87, t + 25) % (kLimit / 20));
1542 if (to > kLimit) to = kLimit; 1542 if (to > kLimit) to = kLimit;
1543 ranges->Add(CharacterRange::Range(from, to), &zone); 1543 ranges->Add(CharacterRange::Range(from, to), &zone);
1544 } 1544 }
1545 DispatchTable table(&zone); 1545 DispatchTable table(&zone);
1546 DispatchTableConstructor cons(&table, false, &zone); 1546 DispatchTableConstructor cons(&table, false, &zone);
1547 cons.set_choice_index(0); 1547 cons.set_choice_index(0);
1548 cons.AddInverse(ranges); 1548 cons.AddInverse(ranges);
1549 for (int i = 0; i < kLimit; i++) { 1549 for (int i = 0; i < kLimit; i++) {
1550 bool is_on = false; 1550 bool is_on = false;
1551 for (int j = 0; !is_on && j < kRangeCount; j++) 1551 for (int j = 0; !is_on && j < kRangeCount; j++)
1552 is_on = ranges->at(j).Contains(i); 1552 is_on = ranges->at(j).Contains(i);
1553 OutSet* set = table.Get(i); 1553 OutSet* set = table.Get(i);
1554 CHECK_EQ(is_on, set->Get(0) == false); 1554 CHECK_EQ(is_on, set->Get(0) == false);
1555 } 1555 }
1556 } 1556 }
1557 Zone zone(CcTest::i_isolate()->allocator()); 1557 Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME);
1558 ZoneList<CharacterRange>* ranges = 1558 ZoneList<CharacterRange>* ranges =
1559 new(&zone) ZoneList<CharacterRange>(1, &zone); 1559 new(&zone) ZoneList<CharacterRange>(1, &zone);
1560 ranges->Add(CharacterRange::Range(0xFFF0, 0xFFFE), &zone); 1560 ranges->Add(CharacterRange::Range(0xFFF0, 0xFFFE), &zone);
1561 DispatchTable table(&zone); 1561 DispatchTable table(&zone);
1562 DispatchTableConstructor cons(&table, false, &zone); 1562 DispatchTableConstructor cons(&table, false, &zone);
1563 cons.set_choice_index(0); 1563 cons.set_choice_index(0);
1564 cons.AddInverse(ranges); 1564 cons.AddInverse(ranges);
1565 CHECK(!table.Get(0xFFFE)->Get(0)); 1565 CHECK(!table.Get(0xFFFE)->Get(0));
1566 CHECK(table.Get(0xFFFF)->Get(0)); 1566 CHECK(table.Get(0xFFFF)->Get(0));
1567 } 1567 }
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
1660 CHECK_EQ(length, length2); 1660 CHECK_EQ(length, length2);
1661 for (int k = 0; k < length; k++) 1661 for (int k = 0; k < length; k++)
1662 CHECK_EQ(static_cast<int>(chars[k]), static_cast<int>(chars2[k])); 1662 CHECK_EQ(static_cast<int>(chars[k]), static_cast<int>(chars2[k]));
1663 } 1663 }
1664 } 1664 }
1665 } 1665 }
1666 1666
1667 1667
1668 static void TestRangeCaseIndependence(Isolate* isolate, CharacterRange input, 1668 static void TestRangeCaseIndependence(Isolate* isolate, CharacterRange input,
1669 Vector<CharacterRange> expected) { 1669 Vector<CharacterRange> expected) {
1670 Zone zone(CcTest::i_isolate()->allocator()); 1670 Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME);
1671 int count = expected.length(); 1671 int count = expected.length();
1672 ZoneList<CharacterRange>* list = 1672 ZoneList<CharacterRange>* list =
1673 new(&zone) ZoneList<CharacterRange>(count, &zone); 1673 new(&zone) ZoneList<CharacterRange>(count, &zone);
1674 list->Add(input, &zone); 1674 list->Add(input, &zone);
1675 CharacterRange::AddCaseEquivalents(isolate, &zone, list, false); 1675 CharacterRange::AddCaseEquivalents(isolate, &zone, list, false);
1676 list->Remove(0); // Remove the input before checking results. 1676 list->Remove(0); // Remove the input before checking results.
1677 CHECK_EQ(count, list->length()); 1677 CHECK_EQ(count, list->length());
1678 for (int i = 0; i < list->length(); i++) { 1678 for (int i = 0; i < list->length(); i++) {
1679 CHECK_EQ(expected[i].from(), list->at(i).from()); 1679 CHECK_EQ(expected[i].from(), list->at(i).from());
1680 CHECK_EQ(expected[i].to(), list->at(i).to()); 1680 CHECK_EQ(expected[i].to(), list->at(i).to());
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
1729 for (int i = 0; i < ranges->length(); i++) { 1729 for (int i = 0; i < ranges->length(); i++) {
1730 CharacterRange range = ranges->at(i); 1730 CharacterRange range = ranges->at(i);
1731 if (range.from() <= c && c <= range.to()) 1731 if (range.from() <= c && c <= range.to())
1732 return true; 1732 return true;
1733 } 1733 }
1734 return false; 1734 return false;
1735 } 1735 }
1736 1736
1737 1737
1738 TEST(UnicodeRangeSplitter) { 1738 TEST(UnicodeRangeSplitter) {
1739 Zone zone(CcTest::i_isolate()->allocator()); 1739 Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME);
1740 ZoneList<CharacterRange>* base = 1740 ZoneList<CharacterRange>* base =
1741 new(&zone) ZoneList<CharacterRange>(1, &zone); 1741 new(&zone) ZoneList<CharacterRange>(1, &zone);
1742 base->Add(CharacterRange::Everything(), &zone); 1742 base->Add(CharacterRange::Everything(), &zone);
1743 UnicodeRangeSplitter splitter(&zone, base); 1743 UnicodeRangeSplitter splitter(&zone, base);
1744 // BMP 1744 // BMP
1745 for (uc32 c = 0; c < 0xd800; c++) { 1745 for (uc32 c = 0; c < 0xd800; c++) {
1746 CHECK(InClass(c, splitter.bmp())); 1746 CHECK(InClass(c, splitter.bmp()));
1747 CHECK(!InClass(c, splitter.lead_surrogates())); 1747 CHECK(!InClass(c, splitter.lead_surrogates()));
1748 CHECK(!InClass(c, splitter.trail_surrogates())); 1748 CHECK(!InClass(c, splitter.trail_surrogates()));
1749 CHECK(!InClass(c, splitter.non_bmp())); 1749 CHECK(!InClass(c, splitter.non_bmp()));
(...skipping 23 matching lines...) Expand all
1773 for (uc32 c = 0x10000; c < 0x10ffff; c++) { 1773 for (uc32 c = 0x10000; c < 0x10ffff; c++) {
1774 CHECK(!InClass(c, splitter.bmp())); 1774 CHECK(!InClass(c, splitter.bmp()));
1775 CHECK(!InClass(c, splitter.lead_surrogates())); 1775 CHECK(!InClass(c, splitter.lead_surrogates()));
1776 CHECK(!InClass(c, splitter.trail_surrogates())); 1776 CHECK(!InClass(c, splitter.trail_surrogates()));
1777 CHECK(InClass(c, splitter.non_bmp())); 1777 CHECK(InClass(c, splitter.non_bmp()));
1778 } 1778 }
1779 } 1779 }
1780 1780
1781 1781
1782 TEST(CanonicalizeCharacterSets) { 1782 TEST(CanonicalizeCharacterSets) {
1783 Zone zone(CcTest::i_isolate()->allocator()); 1783 Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME);
1784 ZoneList<CharacterRange>* list = 1784 ZoneList<CharacterRange>* list =
1785 new(&zone) ZoneList<CharacterRange>(4, &zone); 1785 new(&zone) ZoneList<CharacterRange>(4, &zone);
1786 CharacterSet set(list); 1786 CharacterSet set(list);
1787 1787
1788 list->Add(CharacterRange::Range(10, 20), &zone); 1788 list->Add(CharacterRange::Range(10, 20), &zone);
1789 list->Add(CharacterRange::Range(30, 40), &zone); 1789 list->Add(CharacterRange::Range(30, 40), &zone);
1790 list->Add(CharacterRange::Range(50, 60), &zone); 1790 list->Add(CharacterRange::Range(50, 60), &zone);
1791 set.Canonicalize(); 1791 set.Canonicalize();
1792 CHECK_EQ(3, list->length()); 1792 CHECK_EQ(3, list->length());
1793 CHECK_EQ(10, list->at(0).from()); 1793 CHECK_EQ(10, list->at(0).from());
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
1834 list->Add(CharacterRange::Range(21, 30), &zone); 1834 list->Add(CharacterRange::Range(21, 30), &zone);
1835 list->Add(CharacterRange::Range(20, 20), &zone); 1835 list->Add(CharacterRange::Range(20, 20), &zone);
1836 set.Canonicalize(); 1836 set.Canonicalize();
1837 CHECK_EQ(1, list->length()); 1837 CHECK_EQ(1, list->length());
1838 CHECK_EQ(10, list->at(0).from()); 1838 CHECK_EQ(10, list->at(0).from());
1839 CHECK_EQ(30, list->at(0).to()); 1839 CHECK_EQ(30, list->at(0).to());
1840 } 1840 }
1841 1841
1842 1842
1843 TEST(CharacterRangeMerge) { 1843 TEST(CharacterRangeMerge) {
1844 Zone zone(CcTest::i_isolate()->allocator()); 1844 Zone zone(CcTest::i_isolate()->allocator(), ZONE_NAME);
1845 ZoneList<CharacterRange> l1(4, &zone); 1845 ZoneList<CharacterRange> l1(4, &zone);
1846 ZoneList<CharacterRange> l2(4, &zone); 1846 ZoneList<CharacterRange> l2(4, &zone);
1847 // Create all combinations of intersections of ranges, both singletons and 1847 // Create all combinations of intersections of ranges, both singletons and
1848 // longer. 1848 // longer.
1849 1849
1850 int offset = 0; 1850 int offset = 0;
1851 1851
1852 // The five kinds of singleton intersections: 1852 // The five kinds of singleton intersections:
1853 // X 1853 // X
1854 // Y - outside before 1854 // Y - outside before
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
2024 v8::Local<v8::String> external = 2024 v8::Local<v8::String> external =
2025 v8::String::NewExternalOneByte(isolate, new UncachedExternalString()) 2025 v8::String::NewExternalOneByte(isolate, new UncachedExternalString())
2026 .ToLocalChecked(); 2026 .ToLocalChecked();
2027 CHECK(v8::Utils::OpenHandle(*external)->map() == 2027 CHECK(v8::Utils::OpenHandle(*external)->map() ==
2028 CcTest::i_isolate()->heap()->short_external_one_byte_string_map()); 2028 CcTest::i_isolate()->heap()->short_external_one_byte_string_map());
2029 v8::Local<v8::Object> global = env->Global(); 2029 v8::Local<v8::Object> global = env->Global();
2030 global->Set(env.local(), v8_str("external"), external).FromJust(); 2030 global->Set(env.local(), v8_str("external"), external).FromJust();
2031 CompileRun("var re = /y(.)/; re.test('ab');"); 2031 CompileRun("var re = /y(.)/; re.test('ab');");
2032 ExpectString("external.substring(1).match(re)[1]", "z"); 2032 ExpectString("external.substring(1).match(re)[1]", "z");
2033 } 2033 }
OLDNEW
« no previous file with comments | « test/cctest/test-parsing.cc ('k') | test/cctest/test-run-wasm-relocation-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698