Chromium Code Reviews| Index: src/jsregexp.cc | 
| =================================================================== | 
| --- src/jsregexp.cc (revision 847) | 
| +++ src/jsregexp.cc (working copy) | 
| @@ -473,7 +473,7 @@ | 
| if (FLAG_trace_regexp_bytecodes) { | 
| String* pattern = regexp->Pattern(); | 
| PrintF("\n\nRegexp match: /%s/\n\n", *(pattern->ToCString())); | 
| - PrintF("\n\nSubject string: '%s'\n\n", *(two_byte_subject->ToCString())); | 
| + //PrintF("\n\nSubject string: '%s'\n\n", *(two_byte_subject->ToCString())); | 
| 
 
Christian Plesner Hansen
2008/11/27 06:49:39
Either comment it back in or remove it.
 
 | 
| } | 
| #endif | 
| ASSERT(StringShape(*two_byte_subject).IsTwoByteRepresentation()); | 
| @@ -931,9 +931,6 @@ | 
| RegExpMacroAssembler* macro_assembler, | 
| RegExpNode* start, | 
| int capture_count) { | 
| - if (!FLAG_attempt_case_independent && is_case_independent_) { | 
| - return Handle<FixedArray>::null(); | 
| - } | 
| macro_assembler_ = macro_assembler; | 
| List <RegExpNode*> work_list(0); | 
| work_list_ = &work_list; | 
| @@ -1356,6 +1353,22 @@ | 
| } | 
| +void TextNode::MakeCaseIndependent() { | 
| + int element_count = elms_->length(); | 
| + for (int i = 0; i < element_count; i++) { | 
| + TextElement elm = elms_->at(i); | 
| + if (elm.type == TextElement::CHAR_CLASS) { | 
| + RegExpCharacterClass* cc = elm.data.u_char_class; | 
| + ZoneList<CharacterRange>* ranges = cc->ranges(); | 
| + int range_count = ranges->length(); | 
| + for (int i = 0; i < range_count; i++) { | 
| + ranges->at(i).AddCaseEquivalents(ranges); | 
| + } | 
| + } | 
| + } | 
| +} | 
| + | 
| + | 
| bool ChoiceNode::Emit(RegExpCompiler* compiler) { | 
| int choice_count = alternatives_->length(); | 
| RegExpMacroAssembler* macro_assembler = compiler->macro_assembler(); | 
| @@ -2397,6 +2410,9 @@ | 
| void Analysis::VisitText(TextNode* that) { | 
| + if (case_independent_) { | 
| + that->MakeCaseIndependent(); | 
| + } | 
| EnsureAnalyzed(that->on_success()); | 
| EnsureAnalyzed(that->on_failure()); | 
| } | 
| @@ -2572,7 +2588,7 @@ | 
| captured_body, | 
| compiler.backtrack()); | 
| if (node_return != NULL) *node_return = node; | 
| - Analysis analysis; | 
| + Analysis analysis(ignore_case); | 
| analysis.EnsureAnalyzed(node); | 
| if (!FLAG_irregexp) { |