Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | List of all members
dart::SeqRegExpNode Class Reference

#include <regexp.h>

Inheritance diagram for dart::SeqRegExpNode:
dart::RegExpNode dart::ZoneAllocated dart::ActionNode dart::AssertionNode dart::BackReferenceNode dart::TextNode

Public Member Functions

 SeqRegExpNode (RegExpNode *on_success)
 
RegExpNodeon_success ()
 
void set_on_success (RegExpNode *node)
 
virtual RegExpNodeFilterOneByte (intptr_t depth)
 
virtual void FillInBMInfo (intptr_t offset, intptr_t budget, BoyerMooreLookahead *bm, bool not_at_start)
 
- Public Member Functions inherited from dart::RegExpNode
 RegExpNode (Zone *zone)
 
virtual ~RegExpNode ()
 
virtual void Accept (NodeVisitor *visitor)=0
 
virtual void Emit (RegExpCompiler *compiler, Trace *trace)=0
 
virtual intptr_t EatsAtLeast (intptr_t still_to_find, intptr_t budget, bool not_at_start)=0
 
bool EmitQuickCheck (RegExpCompiler *compiler, Trace *bounds_check_trace, Trace *trace, bool preload_has_checked_bounds, BlockLabel *on_possible_success, QuickCheckDetails *details_return, bool fall_through_on_failure)
 
virtual void GetQuickCheckDetails (QuickCheckDetails *details, RegExpCompiler *compiler, intptr_t characters_filled_in, bool not_at_start)=0
 
virtual intptr_t GreedyLoopTextLength ()
 
virtual RegExpNodeGetSuccessorOfOmnivorousTextNode (RegExpCompiler *compiler)
 
RegExpNodereplacement ()
 
RegExpNodeset_replacement (RegExpNode *replacement)
 
void SaveBMInfo (BoyerMooreLookahead *bm, bool not_at_start, intptr_t offset)
 
BlockLabellabel ()
 
NodeInfoinfo ()
 
BoyerMooreLookaheadbm_info (bool not_at_start)
 
Zonezone () const
 
- Public Member Functions inherited from dart::ZoneAllocated
 ZoneAllocated ()
 
void * operator new (size_t size)
 
void * operator new (size_t size, Zone *zone)
 
void operator delete (void *pointer)
 

Protected Member Functions

RegExpNodeFilterSuccessor (intptr_t depth)
 
- Protected Member Functions inherited from dart::RegExpNode
LimitResult LimitVersions (RegExpCompiler *compiler, Trace *trace)
 
void set_bm_info (bool not_at_start, BoyerMooreLookahead *bm)
 

Additional Inherited Members

- Static Public Attributes inherited from dart::RegExpNode
static constexpr intptr_t kNodeIsTooComplexForGreedyLoops = -1
 
static constexpr intptr_t kRecursionBudget = 200
 
static constexpr intptr_t kMaxCopiesCodeGenerated = 10
 
- Protected Types inherited from dart::RegExpNode
enum  LimitResult { DONE , CONTINUE }
 
- Protected Attributes inherited from dart::RegExpNode
RegExpNodereplacement_
 

Detailed Description

Definition at line 540 of file regexp.h.

Constructor & Destructor Documentation

◆ SeqRegExpNode()

dart::SeqRegExpNode::SeqRegExpNode ( RegExpNode on_success)
inlineexplicit

Definition at line 542 of file regexp.h.

543 : RegExpNode(on_success->zone()), on_success_(on_success) {}
Zone * zone() const
Definition regexp.h:483
RegExpNode(Zone *zone)
Definition regexp.h:386
RegExpNode * on_success()
Definition regexp.h:544

Member Function Documentation

◆ FillInBMInfo()

virtual void dart::SeqRegExpNode::FillInBMInfo ( intptr_t  offset,
intptr_t  budget,
BoyerMooreLookahead bm,
bool  not_at_start 
)
inlinevirtual

Reimplemented from dart::RegExpNode.

Reimplemented in dart::ActionNode, dart::TextNode, dart::AssertionNode, and dart::BackReferenceNode.

Definition at line 547 of file regexp.h.

550 {
551 on_success_->FillInBMInfo(offset, budget - 1, bm, not_at_start);
552 if (offset == 0) set_bm_info(not_at_start, bm);
553 }
void set_bm_info(bool not_at_start, BoyerMooreLookahead *bm)
Definition regexp.h:491
virtual void FillInBMInfo(intptr_t offset, intptr_t budget, BoyerMooreLookahead *bm, bool not_at_start)
Definition regexp.h:439
Point offset

◆ FilterOneByte()

RegExpNode * dart::SeqRegExpNode::FilterOneByte ( intptr_t  depth)
virtual

Reimplemented from dart::RegExpNode.

Reimplemented in dart::TextNode.

Definition at line 1931 of file regexp.cc.

1931 {
1932 if (info()->replacement_calculated) return replacement();
1933 if (depth < 0) return this;
1934 ASSERT(!info()->visited);
1935 VisitMarker marker(info());
1936 return FilterSuccessor(depth - 1);
1937}
static const char marker[]
NodeInfo * info()
Definition regexp.h:477
RegExpNode * replacement()
Definition regexp.h:451
RegExpNode * FilterSuccessor(intptr_t depth)
Definition regexp.cc:1939
#define ASSERT(E)

◆ FilterSuccessor()

RegExpNode * dart::SeqRegExpNode::FilterSuccessor ( intptr_t  depth)
protected

Definition at line 1939 of file regexp.cc.

1939 {
1940 RegExpNode* next = on_success_->FilterOneByte(depth - 1);
1941 if (next == nullptr) return set_replacement(nullptr);
1942 on_success_ = next;
1943 return set_replacement(this);
1944}
static float next(float f)
virtual RegExpNode * FilterOneByte(intptr_t depth)
Definition regexp.h:449
RegExpNode * set_replacement(RegExpNode *replacement)
Definition regexp.h:455

◆ on_success()

RegExpNode * dart::SeqRegExpNode::on_success ( )
inline

Definition at line 544 of file regexp.h.

544{ return on_success_; }

◆ set_on_success()

void dart::SeqRegExpNode::set_on_success ( RegExpNode node)
inline

Definition at line 545 of file regexp.h.

545{ on_success_ = node; }

The documentation for this class was generated from the following files: