V8 Project
|
#include <jsregexp.h>
Public Member Functions | |
TextNode (ZoneList< TextElement > *elms, RegExpNode *on_success) | |
TextNode (RegExpCharacterClass *that, RegExpNode *on_success) | |
virtual void | Accept (NodeVisitor *visitor) |
virtual void | Emit (RegExpCompiler *compiler, Trace *trace) |
virtual int | EatsAtLeast (int still_to_find, int budget, bool not_at_start) |
virtual void | GetQuickCheckDetails (QuickCheckDetails *details, RegExpCompiler *compiler, int characters_filled_in, bool not_at_start) |
ZoneList< TextElement > * | elements () |
void | MakeCaseIndependent (bool is_one_byte) |
virtual int | GreedyLoopTextLength () |
virtual RegExpNode * | GetSuccessorOfOmnivorousTextNode (RegExpCompiler *compiler) |
virtual void | FillInBMInfo (int offset, int budget, BoyerMooreLookahead *bm, bool not_at_start) |
void | CalculateOffsets () |
virtual RegExpNode * | FilterOneByte (int depth, bool ignore_case) |
![]() | |
SeqRegExpNode (RegExpNode *on_success) | |
RegExpNode * | on_success () |
void | set_on_success (RegExpNode *node) |
![]() | |
RegExpNode (Zone *zone) | |
virtual | ~RegExpNode () |
bool | EmitQuickCheck (RegExpCompiler *compiler, Trace *bounds_check_trace, Trace *trace, bool preload_has_checked_bounds, Label *on_possible_success, QuickCheckDetails *details_return, bool fall_through_on_failure) |
RegExpNode * | replacement () |
RegExpNode * | set_replacement (RegExpNode *replacement) |
void | SaveBMInfo (BoyerMooreLookahead *bm, bool not_at_start, int offset) |
Label * | label () |
NodeInfo * | info () |
BoyerMooreLookahead * | bm_info (bool not_at_start) |
Zone * | zone () const |
![]() | |
INLINE (void *operator new(size_t size, Zone *zone)) | |
void | operator delete (void *, size_t) |
void | operator delete (void *pointer, Zone *zone) |
Private Types | |
enum | TextEmitPassType { NON_LATIN1_MATCH , SIMPLE_CHARACTER_MATCH , NON_LETTER_CHARACTER_MATCH , CASE_CHARACTER_MATCH , CHARACTER_CLASS_MATCH } |
Private Member Functions | |
void | TextEmitPass (RegExpCompiler *compiler, TextEmitPassType pass, bool preloaded, Trace *trace, bool first_element_checked, int *checked_up_to) |
int | Length () |
Static Private Member Functions | |
static bool | SkipPass (int pass, bool ignore_case) |
Private Attributes | |
ZoneList< TextElement > * | elms_ |
Static Private Attributes | |
static const int | kFirstRealPass = SIMPLE_CHARACTER_MATCH |
static const int | kLastPass = CHARACTER_CLASS_MATCH |
Additional Inherited Members | |
![]() | |
static const int | kNodeIsTooComplexForGreedyLoops = -1 |
static const int | kRecursionBudget = 200 |
static const int | kMaxCopiesCodeGenerated = 10 |
![]() | |
enum | LimitResult { DONE , CONTINUE } |
![]() | |
RegExpNode * | FilterSuccessor (int depth, bool ignore_case) |
![]() | |
LimitResult | LimitVersions (RegExpCompiler *compiler, Trace *trace) |
void | set_bm_info (bool not_at_start, BoyerMooreLookahead *bm) |
![]() | |
RegExpNode * | replacement_ |
Definition at line 830 of file jsregexp.h.
|
private |
Enumerator | |
---|---|
NON_LATIN1_MATCH | |
SIMPLE_CHARACTER_MATCH | |
NON_LETTER_CHARACTER_MATCH | |
CASE_CHARACTER_MATCH | |
CHARACTER_CLASS_MATCH |
Definition at line 862 of file jsregexp.h.
|
inline |
Definition at line 832 of file jsregexp.h.
|
inline |
Definition at line 836 of file jsregexp.h.
References v8::internal::List< T, AllocationPolicy >::Add(), elms_, and v8::internal::RegExpNode::zone().
|
virtual |
Implements v8::internal::RegExpNode.
void v8::internal::TextNode::CalculateOffsets | ( | ) |
Definition at line 5744 of file jsregexp.cc.
References v8::internal::List< T, AllocationPolicy >::at(), and elements().
|
virtual |
Implements v8::internal::RegExpNode.
Definition at line 2334 of file jsregexp.cc.
|
inline |
Definition at line 849 of file jsregexp.h.
References elms_.
Referenced by CalculateOffsets(), and FillInBMInfo().
|
virtual |
Implements v8::internal::RegExpNode.
Definition at line 3315 of file jsregexp.cc.
References v8::internal::Trace::AdvanceCurrentPositionInTrace(), v8::internal::Trace::bound_checked_up_to(), v8::internal::Trace::characters_preloaded(), v8::internal::Trace::cp_offset(), DCHECK, v8::internal::DONE, v8::internal::RegExpCompiler::ignore_case(), v8::internal::RegExpMacroAssembler::kMaxCPOffset, v8::internal::RegExpCompiler::one_byte(), v8::internal::Trace::set_at_start(), and v8::internal::RegExpCompiler::SetRegExpTooBig().
|
virtual |
Reimplemented from v8::internal::SeqRegExpNode.
Definition at line 5855 of file jsregexp.cc.
References v8::internal::List< T, AllocationPolicy >::at(), v8::internal::BoyerMooreLookahead::compiler(), DCHECK_EQ, elements(), v8::internal::RegExpNode::FillInBMInfo(), v8::internal::CharacterRange::from(), v8::internal::GetCaseIndependentLetters(), v8::internal::RegExpCompiler::ignore_case(), v8::internal::String::kMaxOneByteCharCode, unibrow::Ecma262UnCanonicalize::kMaxWidth, v8::internal::BoyerMooreLookahead::length(), v8::internal::BoyerMooreLookahead::max_char(), v8::internal::Min(), v8::internal::SeqRegExpNode::on_success(), v8::internal::BoyerMooreLookahead::Set(), v8::internal::RegExpNode::set_bm_info(), v8::internal::BoyerMooreLookahead::SetAll(), v8::internal::BoyerMooreLookahead::SetInterval(), v8::internal::CharacterRange::to(), to(), and v8::internal::RegExpNode::zone().
|
virtual |
Reimplemented from v8::internal::SeqRegExpNode.
Definition at line 2789 of file jsregexp.cc.
References v8::internal::List< T, AllocationPolicy >::at(), v8::internal::CharacterRange::Canonicalize(), v8::internal::cc, unibrow::Latin1::ConvertNonLatin1ToLatin1(), DCHECK, v8::internal::CharacterRange::IsCanonical(), v8::internal::String::kMaxOneByteCharCode, v8::internal::Vector< T >::length(), NULL, v8::internal::RangesContainLatin1Equivalents(), and v8::internal::Vector< T >::start().
|
virtual |
Implements v8::internal::RegExpNode.
Definition at line 2527 of file jsregexp.cc.
References v8::internal::List< T, AllocationPolicy >::at(), v8::internal::QuickCheckDetails::cannot_match(), v8::internal::QuickCheckDetails::characters(), DCHECK, v8::internal::QuickCheckDetails::Position::determines_perfectly, v8::internal::CharacterRange::from(), v8::internal::GetCaseIndependentLetters(), v8::internal::RegExpCompiler::ignore_case(), v8::internal::Zone::isolate(), v8::internal::String::kMaxOneByteCharCode, v8::internal::String::kMaxUtf16CodeUnit, unibrow::Ecma262UnCanonicalize::kMaxWidth, v8::internal::Vector< T >::length(), v8::internal::RegExpCompiler::macro_assembler(), v8::internal::QuickCheckDetails::Position::mask, v8::internal::RegExpCompiler::one_byte(), v8::internal::QuickCheckDetails::positions(), v8::internal::QuickCheckDetails::set_cannot_match(), v8::internal::SmearBitsRight(), v8::internal::CharacterRange::to(), to(), v8::internal::QuickCheckDetails::Position::value, and v8::internal::RegExpMacroAssembler::zone().
|
virtual |
Reimplemented from v8::internal::RegExpNode.
Definition at line 3418 of file jsregexp.cc.
References v8::internal::List< T, AllocationPolicy >::at(), v8::internal::CharacterRange::Canonicalize(), v8::internal::CharacterRange::IsCanonical(), v8::internal::String::kMaxOneByteCharCode, v8::internal::String::kMaxUtf16CodeUnit, NULL, and v8::internal::RegExpCompiler::one_byte().
|
virtual |
Reimplemented from v8::internal::RegExpNode.
Definition at line 3412 of file jsregexp.cc.
|
private |
void v8::internal::TextNode::MakeCaseIndependent | ( | bool | is_one_byte | ) |
Definition at line 3393 of file jsregexp.cc.
References v8::internal::List< T, AllocationPolicy >::at(), and v8::internal::cc.
Definition at line 3299 of file jsregexp.cc.
|
private |
Definition at line 3225 of file jsregexp.cc.
References v8::internal::Trace::backtrack(), v8::internal::cc, v8::internal::Trace::cp_offset(), DCHECK, DCHECK_EQ, v8::internal::DeterminedAlready(), v8::internal::EmitAtomLetter(), v8::internal::EmitAtomNonLetter(), v8::internal::EmitCharClass(), v8::internal::EmitSimpleCharacter(), v8::internal::RegExpMacroAssembler::GoTo(), v8::internal::Zone::isolate(), v8::internal::String::kMaxOneByteCharCode, v8::internal::Vector< T >::length(), v8::internal::RegExpCompiler::macro_assembler(), NULL, v8::internal::RegExpCompiler::one_byte(), v8::internal::Trace::quick_check_performed(), v8::internal::UpdateBoundsCheck(), and v8::internal::RegExpMacroAssembler::zone().
|
private |
Definition at line 879 of file jsregexp.h.
Referenced by elements(), and TextNode().
|
staticprivate |
Definition at line 870 of file jsregexp.h.
|
staticprivate |
Definition at line 871 of file jsregexp.h.