Lines Matching refs:compiler
845 explicit RecursionCheck(RegExpCompiler* compiler) : compiler_(compiler) { in RecursionCheck() argument
846 compiler->IncrementRecursionDepth(); in RecursionCheck()
1133 void Trace::Flush(RegExpCompiler* compiler, RegExpNode* successor) { in Flush() argument
1134 RegExpMacroAssembler* assembler = compiler->macro_assembler(); in Flush()
1145 successor->Emit(compiler, &new_state); in Flush()
1175 successor->Emit(compiler, &new_state); in Flush()
1192 void NegativeSubmatchSuccess::Emit(RegExpCompiler* compiler, Trace* trace) { in Emit() argument
1193 RegExpMacroAssembler* assembler = compiler->macro_assembler(); in Emit()
1219 void EndNode::Emit(RegExpCompiler* compiler, Trace* trace) { in Emit() argument
1221 trace->Flush(compiler, this); in Emit()
1224 RegExpMacroAssembler* assembler = compiler->macro_assembler(); in Emit()
1383 RegExpCompiler* compiler, in EmitSimpleCharacter() argument
1389 RegExpMacroAssembler* assembler = compiler->macro_assembler(); in EmitSimpleCharacter()
1406 RegExpCompiler* compiler, in EmitAtomNonLetter() argument
1412 RegExpMacroAssembler* macro_assembler = compiler->macro_assembler(); in EmitAtomNonLetter()
1413 bool ascii = compiler->ascii(); in EmitAtomNonLetter()
1478 RegExpCompiler* compiler,
1488 RegExpCompiler* compiler, in EmitAtomLetter() argument
1494 RegExpMacroAssembler* macro_assembler = compiler->macro_assembler(); in EmitAtomLetter()
1495 bool ascii = compiler->ascii(); in EmitAtomLetter()
1665 RegExpNode::LimitResult RegExpNode::LimitVersions(RegExpCompiler* compiler, in LimitVersions() argument
1672 RegExpMacroAssembler* macro_assembler = compiler->macro_assembler(); in LimitVersions()
1680 if (compiler->recursion_depth() >= RegExpCompiler::kMaxRecursion) { in LimitVersions()
1683 compiler->AddWork(this); in LimitVersions()
1697 compiler->recursion_depth() <= RegExpCompiler::kMaxRecursion) { in LimitVersions()
1704 trace->Flush(compiler, this); in LimitVersions()
1772 RegExpCompiler* compiler, in GetQuickCheckDetails() argument
1778 return node->GetQuickCheckDetails(details, compiler, filled_in, not_at_start); in GetQuickCheckDetails()
1856 bool RegExpNode::EmitQuickCheck(RegExpCompiler* compiler, in EmitQuickCheck() argument
1863 GetQuickCheckDetails(details, compiler, 0, trace->at_start() == Trace::FALSE); in EmitQuickCheck()
1865 if (!details->Rationalize(compiler->ascii())) return false; in EmitQuickCheck()
1867 compiler->macro_assembler()->CanReadUnaligned()); in EmitQuickCheck()
1871 RegExpMacroAssembler* assembler = compiler->macro_assembler(); in EmitQuickCheck()
1887 if (compiler->ascii()) { in EmitQuickCheck()
1897 if (details->characters() == 2 && compiler->ascii()) { in EmitQuickCheck()
1899 } else if (details->characters() == 1 && !compiler->ascii()) { in EmitQuickCheck()
1932 RegExpCompiler* compiler, in GetQuickCheckDetails() argument
1939 if (compiler->ascii()) { in GetQuickCheckDetails()
1961 if (compiler->ignore_case()) { in GetQuickCheckDetails()
1963 int length = GetCaseIndependentLetters(isolate, c, compiler->ascii(), in GetQuickCheckDetails()
2075 compiler, in GetQuickCheckDetails()
2156 RegExpCompiler* compiler, in GetQuickCheckDetails() argument
2162 compiler, in GetQuickCheckDetails()
2169 RegExpCompiler* compiler, in GetQuickCheckDetails() argument
2176 compiler, in GetQuickCheckDetails()
2182 node->GetQuickCheckDetails(&new_details, compiler, in GetQuickCheckDetails()
2218 static void EmitHat(RegExpCompiler* compiler, in EmitHat() argument
2221 RegExpMacroAssembler* assembler = compiler->macro_assembler(); in EmitHat()
2241 if (!compiler->ascii()) { in EmitHat()
2248 on_success->Emit(compiler, &new_trace); in EmitHat()
2255 RegExpCompiler* compiler, in EmitHalfBoundaryCheck() argument
2258 RegExpMacroAssembler* assembler = compiler->macro_assembler(); in EmitHalfBoundaryCheck()
2288 on_success->Emit(compiler, &new_trace); in EmitHalfBoundaryCheck()
2294 RegExpCompiler* compiler, in EmitBoundaryCheck() argument
2297 RegExpMacroAssembler* assembler = compiler->macro_assembler(); in EmitBoundaryCheck()
2355 on_success->Emit(compiler, &new_trace); in EmitBoundaryCheck()
2360 RegExpCompiler* compiler, in GetQuickCheckDetails() argument
2368 compiler, in GetQuickCheckDetails()
2374 void AssertionNode::Emit(RegExpCompiler* compiler, Trace* trace) { in Emit() argument
2375 RegExpMacroAssembler* assembler = compiler->macro_assembler(); in Emit()
2393 on_success()->Emit(compiler, &at_start_trace); in Emit()
2399 EmitHat(compiler, on_success(), trace); in Emit()
2403 EmitBoundaryCheck(type_, compiler, on_success(), trace); in Emit()
2408 EmitHalfBoundaryCheck(type_, compiler, on_success(), trace); in Emit()
2411 on_success()->Emit(compiler, trace); in Emit()
2458 void TextNode::TextEmitPass(RegExpCompiler* compiler, in TextEmitPass() argument
2465 RegExpMacroAssembler* assembler = compiler->macro_assembler(); in TextEmitPass()
2466 bool ascii = compiler->ascii(); in TextEmitPass()
2501 compiler, in TextEmitPass()
2557 void TextNode::Emit(RegExpCompiler* compiler, Trace* trace) { in Emit() argument
2558 LimitResult limit_result = LimitVersions(compiler, trace); in Emit()
2563 compiler->SetRegExpTooBig(); in Emit()
2567 if (compiler->ascii()) { in Emit()
2569 TextEmitPass(compiler, NON_ASCII_MATCH, false, trace, false, &dummy); in Emit()
2580 if (!SkipPass(pass, compiler->ignore_case())) { in Emit()
2581 TextEmitPass(compiler, in Emit()
2593 if (!SkipPass(pass, compiler->ignore_case())) { in Emit()
2594 TextEmitPass(compiler, in Emit()
2605 successor_trace.AdvanceCurrentPositionInTrace(Length(), compiler); in Emit()
2606 RecursionCheck rc(compiler); in Emit()
2607 on_success()->Emit(compiler, &successor_trace); in Emit()
2616 void Trace::AdvanceCurrentPositionInTrace(int by, RegExpCompiler* compiler) { in AdvanceCurrentPositionInTrace() argument
2625 quick_check_performed_.Advance(by, compiler->ascii()); in AdvanceCurrentPositionInTrace()
2628 compiler->SetRegExpTooBig(); in AdvanceCurrentPositionInTrace()
2705 void LoopChoiceNode::Emit(RegExpCompiler* compiler, Trace* trace) { in Emit() argument
2706 RegExpMacroAssembler* macro_assembler = compiler->macro_assembler(); in Emit()
2720 trace->Flush(compiler, this); in Emit()
2723 ChoiceNode::Emit(compiler, trace); in Emit()
2727 int ChoiceNode::CalculatePreloadCharacters(RegExpCompiler* compiler, in CalculatePreloadCharacters() argument
2730 if (compiler->macro_assembler()->CanReadUnaligned()) { in CalculatePreloadCharacters()
2731 bool ascii = compiler->ascii(); in CalculatePreloadCharacters()
2874 void ChoiceNode::Emit(RegExpCompiler* compiler, Trace* trace) { in Emit() argument
2875 RegExpMacroAssembler* macro_assembler = compiler->macro_assembler(); in Emit()
2888 LimitResult limit_result = LimitVersions(compiler, trace); in Emit()
2894 trace->Flush(compiler, this); in Emit()
2898 RecursionCheck rc(compiler); in Emit()
2929 alternatives_->at(0).node()->Emit(compiler, &greedy_match_trace); in Emit()
2939 CalculatePreloadCharacters(compiler, in Emit()
2968 alternative.node()->EmitQuickCheck(compiler, in Emit()
3014 alternative.node()->Emit(compiler, &new_trace); in Emit()
3040 EmitOutOfLineContinuation(compiler, in Emit()
3050 void ChoiceNode::EmitOutOfLineContinuation(RegExpCompiler* compiler, in EmitOutOfLineContinuation() argument
3058 RegExpMacroAssembler* macro_assembler = compiler->macro_assembler(); in EmitOutOfLineContinuation()
3072 alternative.node()->Emit(compiler, &out_of_line_trace); in EmitOutOfLineContinuation()
3087 alternative.node()->Emit(compiler, &out_of_line_trace); in EmitOutOfLineContinuation()
3092 void ActionNode::Emit(RegExpCompiler* compiler, Trace* trace) { in Emit() argument
3093 RegExpMacroAssembler* assembler = compiler->macro_assembler(); in Emit()
3094 LimitResult limit_result = LimitVersions(compiler, trace); in Emit()
3098 RecursionCheck rc(compiler); in Emit()
3108 on_success()->Emit(compiler, &new_trace); in Emit()
3116 on_success()->Emit(compiler, &new_trace); in Emit()
3124 on_success()->Emit(compiler, &new_trace); in Emit()
3133 on_success()->Emit(compiler, &new_trace); in Emit()
3138 trace->Flush(compiler, this); in Emit()
3144 on_success()->Emit(compiler, trace); in Emit()
3160 on_success()->Emit(compiler, trace); in Emit()
3162 trace->Flush(compiler, this); in Emit()
3176 on_success()->Emit(compiler, trace); in Emit()
3182 trace->Flush(compiler, this); in Emit()
3191 on_success()->Emit(compiler, trace); in Emit()
3198 on_success()->Emit(compiler, &new_trace); in Emit()
3214 void BackReferenceNode::Emit(RegExpCompiler* compiler, Trace* trace) { in Emit() argument
3215 RegExpMacroAssembler* assembler = compiler->macro_assembler(); in Emit()
3217 trace->Flush(compiler, this); in Emit()
3221 LimitResult limit_result = LimitVersions(compiler, trace); in Emit()
3225 RecursionCheck rc(compiler); in Emit()
3228 if (compiler->ignore_case()) { in Emit()
3234 on_success()->Emit(compiler, trace); in Emit()
3617 RegExpNode* RegExpAtom::ToNode(RegExpCompiler* compiler, in ToNode() argument
3625 RegExpNode* RegExpText::ToNode(RegExpCompiler* compiler, in ToNode() argument
3716 RegExpNode* RegExpCharacterClass::ToNode(RegExpCompiler* compiler, in ToNode() argument
3722 RegExpNode* RegExpDisjunction::ToNode(RegExpCompiler* compiler, in ToNode() argument
3728 GuardedAlternative alternative(alternatives->at(i)->ToNode(compiler, in ToNode()
3736 RegExpNode* RegExpQuantifier::ToNode(RegExpCompiler* compiler, in ToNode() argument
3742 compiler, in ToNode()
3752 RegExpExpansionLimiter(RegExpCompiler* compiler, int factor) in RegExpExpansionLimiter() argument
3753 : compiler_(compiler), in RegExpExpansionLimiter()
3754 saved_expansion_factor_(compiler->current_expansion_factor()), in RegExpExpansionLimiter()
3761 compiler->set_current_expansion_factor(kMaxExpansionFactor + 1); in RegExpExpansionLimiter()
3765 compiler->set_current_expansion_factor(new_factor); in RegExpExpansionLimiter()
3789 RegExpCompiler* compiler, in ToNode() argument
3820 body_start_reg = compiler->AllocateRegister(); in ToNode()
3826 compiler, min + ((max != min) ? 1 : 0)); in ToNode()
3832 0, new_max, is_greedy, body, compiler, on_success, true); in ToNode()
3837 answer = body->ToNode(compiler, answer); in ToNode()
3844 RegExpExpansionLimiter limiter(compiler, max); in ToNode()
3852 GuardedAlternative(body->ToNode(compiler, answer))); in ToNode()
3857 GuardedAlternative(body->ToNode(compiler, answer))); in ToNode()
3870 ? compiler->AllocateRegister() in ToNode()
3885 RegExpNode* body_node = body->ToNode(compiler, loop_return); in ToNode()
3920 RegExpNode* RegExpAssertion::ToNode(RegExpCompiler* compiler, in ToNode() argument
3938 int stack_pointer_register = compiler->AllocateRegister(); in ToNode()
3939 int position_register = compiler->AllocateRegister(); in ToNode()
3973 RegExpNode* RegExpBackReference::ToNode(RegExpCompiler* compiler, in ToNode() argument
3981 RegExpNode* RegExpEmpty::ToNode(RegExpCompiler* compiler, in ToNode() argument
3987 RegExpNode* RegExpLookahead::ToNode(RegExpCompiler* compiler, in ToNode() argument
3989 int stack_pointer_register = compiler->AllocateRegister(); in ToNode()
3990 int position_register = compiler->AllocateRegister(); in ToNode()
4004 compiler, in ToNode()
4024 compiler, in ToNode()
4039 RegExpNode* RegExpCapture::ToNode(RegExpCompiler* compiler, in ToNode() argument
4041 return ToNode(body(), index(), compiler, on_success); in ToNode()
4047 RegExpCompiler* compiler, in ToNode() argument
4052 RegExpNode* body_node = body->ToNode(compiler, store_end); in ToNode()
4057 RegExpNode* RegExpAlternative::ToNode(RegExpCompiler* compiler, in ToNode() argument
4062 current = children->at(i)->ToNode(compiler, current); in ToNode()
5261 RegExpCompiler compiler(data->capture_count, ignore_case, is_ascii); in Compile() local
5265 &compiler, in Compile()
5266 compiler.accept()); in Compile()
5279 &compiler, in Compile()
5336 return compiler.Assemble(¯o_assembler, in Compile()