| Index: src/jsregexp.cc
|
| diff --git a/src/jsregexp.cc b/src/jsregexp.cc
|
| index 5da73985dec07c23de1a9413de1997486159d92f..45e7d1a70ef19ab4b65a418bc25c2c6e03efca85 100644
|
| --- a/src/jsregexp.cc
|
| +++ b/src/jsregexp.cc
|
| @@ -2477,7 +2477,8 @@ bool RegExpNode::EmitQuickCheck(RegExpCompiler* compiler,
|
| QuickCheckDetails* details,
|
| bool fall_through_on_failure) {
|
| if (details->characters() == 0) return false;
|
| - GetQuickCheckDetails(details, compiler, 0, trace->at_start() == Trace::FALSE);
|
| + GetQuickCheckDetails(
|
| + details, compiler, 0, trace->at_start() == Trace::FALSE_LITERAL);
|
| if (details->cannot_match()) return false;
|
| if (!details->Rationalize(compiler->ascii())) return false;
|
| ASSERT(details->characters() == 1 ||
|
| @@ -3066,7 +3067,7 @@ static void EmitHat(RegExpCompiler* compiler,
|
| void AssertionNode::EmitBoundaryCheck(RegExpCompiler* compiler, Trace* trace) {
|
| RegExpMacroAssembler* assembler = compiler->macro_assembler();
|
| Trace::TriBool next_is_word_character = Trace::UNKNOWN;
|
| - bool not_at_start = (trace->at_start() == Trace::FALSE);
|
| + bool not_at_start = (trace->at_start() == Trace::FALSE_LITERAL);
|
| BoyerMooreLookahead* lookahead = bm_info(not_at_start);
|
| if (lookahead == NULL) {
|
| int eats_at_least =
|
| @@ -3077,12 +3078,15 @@ void AssertionNode::EmitBoundaryCheck(RegExpCompiler* compiler, Trace* trace) {
|
| BoyerMooreLookahead* bm =
|
| new(zone()) BoyerMooreLookahead(eats_at_least, compiler, zone());
|
| FillInBMInfo(0, kRecursionBudget, bm, not_at_start);
|
| - if (bm->at(0)->is_non_word()) next_is_word_character = Trace::FALSE;
|
| - if (bm->at(0)->is_word()) next_is_word_character = Trace::TRUE;
|
| + if (bm->at(0)->is_non_word())
|
| + next_is_word_character = Trace::FALSE_LITERAL;
|
| + if (bm->at(0)->is_word()) next_is_word_character = Trace::TRUE_LITERAL;
|
| }
|
| } else {
|
| - if (lookahead->at(0)->is_non_word()) next_is_word_character = Trace::FALSE;
|
| - if (lookahead->at(0)->is_word()) next_is_word_character = Trace::TRUE;
|
| + if (lookahead->at(0)->is_non_word())
|
| + next_is_word_character = Trace::FALSE_LITERAL;
|
| + if (lookahead->at(0)->is_word())
|
| + next_is_word_character = Trace::TRUE_LITERAL;
|
| }
|
| bool at_boundary = (assertion_type_ == AssertionNode::AT_BOUNDARY);
|
| if (next_is_word_character == Trace::UNKNOWN) {
|
| @@ -3102,10 +3106,10 @@ void AssertionNode::EmitBoundaryCheck(RegExpCompiler* compiler, Trace* trace) {
|
| assembler->Bind(&before_word);
|
| BacktrackIfPrevious(compiler, trace, at_boundary ? kIsWord : kIsNonWord);
|
| assembler->Bind(&ok);
|
| - } else if (next_is_word_character == Trace::TRUE) {
|
| + } else if (next_is_word_character == Trace::TRUE_LITERAL) {
|
| BacktrackIfPrevious(compiler, trace, at_boundary ? kIsWord : kIsNonWord);
|
| } else {
|
| - ASSERT(next_is_word_character == Trace::FALSE);
|
| + ASSERT(next_is_word_character == Trace::FALSE_LITERAL);
|
| BacktrackIfPrevious(compiler, trace, at_boundary ? kIsNonWord : kIsWord);
|
| }
|
| }
|
| @@ -3169,7 +3173,7 @@ void AssertionNode::Emit(RegExpCompiler* compiler, Trace* trace) {
|
| break;
|
| }
|
| case AT_START: {
|
| - if (trace->at_start() == Trace::FALSE) {
|
| + if (trace->at_start() == Trace::FALSE_LITERAL) {
|
| assembler->GoTo(trace->backtrack());
|
| return;
|
| }
|
| @@ -3986,7 +3990,7 @@ void ChoiceNode::Emit(RegExpCompiler* compiler, Trace* trace) {
|
|
|
| int first_normal_choice = greedy_loop ? 1 : 0;
|
|
|
| - bool not_at_start = current_trace->at_start() == Trace::FALSE;
|
| + bool not_at_start = current_trace->at_start() == Trace::FALSE_LITERAL;
|
| const int kEatsAtLeastNotYetInitialized = -1;
|
| int eats_at_least = kEatsAtLeastNotYetInitialized;
|
|
|
| @@ -4057,7 +4061,7 @@ void ChoiceNode::Emit(RegExpCompiler* compiler, Trace* trace) {
|
| new_trace.set_bound_checked_up_to(preload_characters);
|
| }
|
| new_trace.quick_check_performed()->Clear();
|
| - if (not_at_start_) new_trace.set_at_start(Trace::FALSE);
|
| + if (not_at_start_) new_trace.set_at_start(Trace::FALSE_LITERAL);
|
| alt_gen->expects_preload = preload_is_current;
|
| bool generate_full_check_inline = false;
|
| if (FLAG_regexp_optimization &&
|
| @@ -4157,7 +4161,7 @@ void ChoiceNode::EmitOutOfLineContinuation(RegExpCompiler* compiler,
|
| Trace out_of_line_trace(*trace);
|
| out_of_line_trace.set_characters_preloaded(preload_characters);
|
| out_of_line_trace.set_quick_check_performed(&alt_gen->quick_check_details);
|
| - if (not_at_start_) out_of_line_trace.set_at_start(Trace::FALSE);
|
| + if (not_at_start_) out_of_line_trace.set_at_start(Trace::FALSE_LITERAL);
|
| ZoneList<Guard*>* guards = alternative.guards();
|
| int guard_count = (guards == NULL) ? 0 : guards->length();
|
| if (next_expects_preload) {
|
|
|