V8 Project
|
#include <jsregexp.h>
Protected Member Functions | |
int | GreedyLoopTextLengthForAlternative (GuardedAlternative *alternative) |
![]() | |
LimitResult | LimitVersions (RegExpCompiler *compiler, Trace *trace) |
void | set_bm_info (bool not_at_start, BoyerMooreLookahead *bm) |
Protected Attributes | |
ZoneList< GuardedAlternative > * | alternatives_ |
![]() | |
RegExpNode * | replacement_ |
Private Member Functions | |
void | GenerateGuard (RegExpMacroAssembler *macro_assembler, Guard *guard, Trace *trace) |
int | CalculatePreloadCharacters (RegExpCompiler *compiler, int eats_at_least) |
void | EmitOutOfLineContinuation (RegExpCompiler *compiler, Trace *trace, GuardedAlternative alternative, AlternativeGeneration *alt_gen, int preload_characters, bool next_expects_preload) |
void | SetUpPreLoad (RegExpCompiler *compiler, Trace *current_trace, PreloadState *preloads) |
void | AssertGuardsMentionRegisters (Trace *trace) |
int | EmitOptimizedUnanchoredSearch (RegExpCompiler *compiler, Trace *trace) |
Trace * | EmitGreedyLoop (RegExpCompiler *compiler, Trace *trace, AlternativeGenerationList *alt_gens, PreloadState *preloads, GreedyLoopState *greedy_loop_state, int text_length) |
void | EmitChoices (RegExpCompiler *compiler, AlternativeGenerationList *alt_gens, int first_choice, Trace *trace, PreloadState *preloads) |
Private Attributes | |
DispatchTable * | table_ |
bool | not_at_start_ |
bool | being_calculated_ |
Friends | |
class | DispatchTableConstructor |
class | Analysis |
Additional Inherited Members | |
![]() | |
static const int | kNodeIsTooComplexForGreedyLoops = -1 |
static const int | kRecursionBudget = 200 |
static const int | kMaxCopiesCodeGenerated = 10 |
![]() | |
enum | LimitResult { DONE , CONTINUE } |
Definition at line 1051 of file jsregexp.h.
Definition at line 1053 of file jsregexp.h.
|
virtual |
Implements v8::internal::RegExpNode.
Reimplemented in v8::internal::LoopChoiceNode.
|
inline |
Definition at line 1061 of file jsregexp.h.
References alternatives(), and v8::internal::RegExpNode::zone().
Referenced by v8::internal::LoopChoiceNode::AddAlternative(), v8::internal::RegExpEngine::Compile(), and v8::internal::NegativeLookaheadChoiceNode::NegativeLookaheadChoiceNode().
|
inline |
Definition at line 1064 of file jsregexp.h.
References alternatives_.
Referenced by AddAlternative(), v8::internal::DispatchTableConstructor::BuildTable(), FillInBMInfo(), and v8::internal::Analysis::VisitLoopChoice().
|
private |
Definition at line 3900 of file jsregexp.cc.
References alternatives_, v8::internal::List< T, AllocationPolicy >::at(), DCHECK, v8::internal::GuardedAlternative::guards(), v8::internal::Trace::mentions_reg(), and NULL.
Referenced by Emit().
|
inline |
|
private |
Definition at line 3506 of file jsregexp.cc.
References v8::internal::RegExpMacroAssembler::CanReadUnaligned(), v8::internal::RegExpCompiler::macro_assembler(), v8::internal::Min(), and v8::internal::RegExpCompiler::one_byte().
Referenced by SetUpPreLoad().
|
virtual |
Implements v8::internal::RegExpNode.
Reimplemented in v8::internal::LoopChoiceNode, and v8::internal::NegativeLookaheadChoiceNode.
Definition at line 2400 of file jsregexp.cc.
References NULL.
Referenced by EmitOptimizedUnanchoredSearch(), and SetUpPreLoad().
int v8::internal::ChoiceNode::EatsAtLeastHelper | ( | int | still_to_find, |
int | budget, | ||
RegExpNode * | ignore_this_node, | ||
bool | not_at_start | ||
) |
Definition at line 2370 of file jsregexp.cc.
References v8::internal::RegExpNode::EatsAtLeast(), and v8::internal::min().
|
virtual |
Implements v8::internal::RegExpNode.
Reimplemented in v8::internal::LoopChoiceNode.
Definition at line 3933 of file jsregexp.cc.
References v8::internal::Trace::actions(), alternatives_, AssertGuardsMentionRegisters(), v8::internal::AlternativeGenerationList::at(), v8::internal::RegExpMacroAssembler::Bind(), v8::internal::RegExpNode::CONTINUE, DCHECK, v8::internal::RegExpNode::DONE, v8::internal::PreloadState::eats_at_least_, EmitChoices(), EmitGreedyLoop(), EmitOptimizedUnanchoredSearch(), EmitOutOfLineContinuation(), v8::internal::AlternativeGeneration::expects_preload, false, v8::internal::Trace::Flush(), v8::internal::Trace::flush_budget(), GreedyLoopTextLengthForAlternative(), v8::internal::PreloadState::init(), v8::internal::RegExpNode::kNodeIsTooComplexForGreedyLoops, v8::internal::RegExpNode::LimitVersions(), v8::internal::RegExpCompiler::macro_assembler(), not_at_start(), NULL, v8::internal::PreloadState::preload_characters_, v8::internal::Trace::set_flush_budget(), and v8::internal::RegExpNode::zone().
Referenced by v8::internal::LoopChoiceNode::Emit().
|
private |
Definition at line 4103 of file jsregexp.cc.
References v8::internal::Trace::actions(), v8::internal::AlternativeGeneration::after, alternatives_, v8::internal::AlternativeGenerationList::at(), v8::internal::List< T, AllocationPolicy >::at(), v8::internal::Trace::backtrack(), v8::internal::RegExpMacroAssembler::Bind(), v8::internal::QuickCheckDetails::cannot_match(), v8::internal::QuickCheckDetails::Clear(), v8::internal::RegExpNode::Emit(), v8::internal::RegExpNode::EmitQuickCheck(), v8::internal::AlternativeGeneration::expects_preload, v8::internal::Trace::FALSE_VALUE, v8::internal::Trace::flush_budget(), GenerateGuard(), v8::internal::RegExpMacroAssembler::GoTo(), v8::internal::GuardedAlternative::guards(), v8::internal::Trace::InvalidateCurrentCharacter(), v8::internal::RegExpCompiler::macro_assembler(), v8::internal::GuardedAlternative::node(), not_at_start_, NULL, v8::internal::AlternativeGeneration::possible_success, v8::internal::PreloadState::preload_characters_, v8::internal::PreloadState::preload_has_checked_bounds_, v8::internal::PreloadState::preload_is_current_, v8::internal::AlternativeGeneration::quick_check_details, v8::internal::Trace::quick_check_performed(), v8::internal::Trace::set_at_start(), v8::internal::Trace::set_backtrack(), v8::internal::Trace::set_bound_checked_up_to(), v8::internal::QuickCheckDetails::set_characters(), v8::internal::Trace::set_characters_preloaded(), v8::internal::Trace::set_flush_budget(), v8::internal::Trace::set_quick_check_performed(), SetUpPreLoad(), and try_to_emit_quick_check_for_alternative().
Referenced by Emit(), and EmitGreedyLoop().
|
private |
Definition at line 4005 of file jsregexp.cc.
References v8::internal::RegExpMacroAssembler::AdvanceCurrentPosition(), alternatives_, v8::internal::Trace::backtrack(), v8::internal::RegExpMacroAssembler::Bind(), v8::internal::RegExpMacroAssembler::CheckGreedyLoop(), v8::internal::GreedyLoopState::counter_backtrack_trace(), DCHECK, EmitChoices(), v8::internal::RegExpMacroAssembler::GoTo(), v8::internal::GreedyLoopState::label(), v8::internal::RegExpCompiler::macro_assembler(), not_at_start(), NULL, v8::internal::RegExpMacroAssembler::PushCurrentPosition(), v8::internal::Trace::set_at_start(), v8::internal::Trace::set_backtrack(), v8::internal::Trace::set_loop_label(), v8::internal::Trace::set_stop_node(), and v8::internal::Trace::stop_node().
Referenced by Emit().
|
private |
Definition at line 4052 of file jsregexp.cc.
References alternatives_, v8::internal::RegExpNode::bm_info(), DCHECK, EatsAtLeast(), v8::internal::BoyerMooreLookahead::EmitSkipInstructions(), v8::internal::RegExpNode::FillInBMInfo(), v8::internal::RegExpNode::GetSuccessorOfOmnivorousTextNode(), v8::internal::GuardedAlternative::guards(), v8::internal::Trace::is_trivial(), v8::internal::PreloadState::kEatsAtLeastNotYetInitialized, v8::internal::kMaxLookaheadForBoyerMoore, v8::internal::RegExpNode::kRecursionBudget, v8::internal::RegExpCompiler::macro_assembler(), v8::internal::Min(), v8::internal::GuardedAlternative::node(), NULL, and v8::internal::RegExpNode::zone().
Referenced by Emit().
|
private |
Definition at line 4192 of file jsregexp.cc.
References v8::internal::AlternativeGeneration::after, v8::internal::List< T, AllocationPolicy >::at(), v8::internal::RegExpMacroAssembler::Bind(), v8::internal::Trace::cp_offset(), v8::internal::RegExpNode::Emit(), v8::internal::Trace::FALSE_VALUE, GenerateGuard(), v8::internal::RegExpMacroAssembler::GoTo(), v8::internal::GuardedAlternative::guards(), v8::internal::RegExpMacroAssembler::LoadCurrentCharacter(), v8::internal::RegExpCompiler::macro_assembler(), v8::internal::GuardedAlternative::node(), not_at_start_, NULL, v8::internal::AlternativeGeneration::possible_success, v8::internal::AlternativeGeneration::quick_check_details, v8::internal::Trace::set_at_start(), v8::internal::Trace::set_backtrack(), v8::internal::Trace::set_characters_preloaded(), and v8::internal::Trace::set_quick_check_performed().
Referenced by Emit().
|
virtual |
Reimplemented from v8::internal::RegExpNode.
Reimplemented in v8::internal::LoopChoiceNode, and v8::internal::NegativeLookaheadChoiceNode.
Definition at line 5836 of file jsregexp.cc.
References alternatives(), v8::internal::List< T, AllocationPolicy >::at(), v8::internal::RegExpNode::FillInBMInfo(), v8::internal::GuardedAlternative::guards(), v8::internal::GuardedAlternative::node(), not_at_start(), NULL, v8::internal::RegExpNode::SaveBMInfo(), and v8::internal::BoyerMooreLookahead::SetRest().
Referenced by v8::internal::LoopChoiceNode::FillInBMInfo().
|
virtual |
Reimplemented from v8::internal::RegExpNode.
Reimplemented in v8::internal::LoopChoiceNode, and v8::internal::NegativeLookaheadChoiceNode.
Definition at line 2861 of file jsregexp.cc.
References v8::internal::List< T, AllocationPolicy >::Add(), DCHECK, v8::internal::RegExpNode::FilterOneByte(), v8::internal::GuardedAlternative::guards(), v8::internal::GuardedAlternative::node(), and NULL.
Referenced by v8::internal::LoopChoiceNode::FilterOneByte().
|
private |
Definition at line 1568 of file jsregexp.cc.
References v8::internal::Trace::backtrack(), DCHECK, v8::internal::Guard::GEQ, v8::internal::RegExpMacroAssembler::IfRegisterGE(), v8::internal::RegExpMacroAssembler::IfRegisterLT(), v8::internal::Guard::LT, v8::internal::Trace::mentions_reg(), v8::internal::Guard::op(), v8::internal::Guard::reg(), and v8::internal::Guard::value().
Referenced by EmitChoices(), and EmitOutOfLineContinuation().
|
virtual |
Implements v8::internal::RegExpNode.
Reimplemented in v8::internal::LoopChoiceNode, and v8::internal::NegativeLookaheadChoiceNode.
Definition at line 2962 of file jsregexp.cc.
References v8::internal::QuickCheckDetails::characters(), DCHECK, v8::internal::RegExpNode::GetQuickCheckDetails(), and v8::internal::QuickCheckDetails::Merge().
Referenced by v8::internal::LoopChoiceNode::GetQuickCheckDetails().
DispatchTable * v8::internal::ChoiceNode::GetTable | ( | bool | ignore_case | ) |
Definition at line 936 of file jsregexp.cc.
References v8::internal::DispatchTableConstructor::BuildTable(), and NULL.
|
protected |
Definition at line 3446 of file jsregexp.cc.
References v8::internal::RegExpNode::GreedyLoopTextLength(), v8::internal::RegExpCompiler::kMaxRecursion, v8::internal::GuardedAlternative::node(), and v8::internal::SeqRegExpNode::on_success().
Referenced by Emit().
|
inline |
Definition at line 1082 of file jsregexp.h.
References not_at_start_.
Referenced by Emit(), EmitGreedyLoop(), FillInBMInfo(), and v8::internal::NegativeLookaheadChoiceNode::FillInBMInfo().
|
inline |
Definition at line 1084 of file jsregexp.h.
References being_calculated_.
Referenced by v8::internal::DispatchTableConstructor::BuildTable().
|
inline |
|
private |
Definition at line 3915 of file jsregexp.cc.
References v8::internal::Trace::at_start(), CalculatePreloadCharacters(), v8::internal::Trace::characters_preloaded(), v8::internal::PreloadState::eats_at_least_, EatsAtLeast(), v8::internal::Trace::FALSE_VALUE, v8::internal::PreloadState::kEatsAtLeastNotYetInitialized, v8::internal::RegExpNode::kRecursionBudget, v8::internal::RegExpCompiler::one_byte(), v8::internal::PreloadState::preload_characters_, v8::internal::PreloadState::preload_has_checked_bounds_, and v8::internal::PreloadState::preload_is_current_.
Referenced by EmitChoices().
|
inlinevirtual |
Reimplemented in v8::internal::NegativeLookaheadChoiceNode.
Definition at line 1085 of file jsregexp.h.
Referenced by EmitChoices().
|
friend |
Definition at line 1096 of file jsregexp.h.
|
friend |
Definition at line 1095 of file jsregexp.h.
|
protected |
Definition at line 1092 of file jsregexp.h.
Referenced by alternatives(), AssertGuardsMentionRegisters(), Emit(), EmitChoices(), EmitGreedyLoop(), EmitOptimizedUnanchoredSearch(), and v8::internal::NegativeLookaheadChoiceNode::FillInBMInfo().
|
private |
Definition at line 1127 of file jsregexp.h.
Referenced by being_calculated(), and set_being_calculated().
|
private |
Definition at line 1126 of file jsregexp.h.
Referenced by EmitChoices(), EmitOutOfLineContinuation(), not_at_start(), and set_not_at_start().
|
private |
Definition at line 1123 of file jsregexp.h.