v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
v8::internal::RegExpNode Class Referenceabstract

#include <regexp-nodes.h>

Inheritance diagram for v8::internal::RegExpNode:
Collaboration diagram for v8::internal::RegExpNode:

Public Member Functions

 RegExpNode (Zone *zone)
 
virtual ~RegExpNode ()
 
virtual void Accept (NodeVisitor *visitor)=0
 
virtual void Emit (RegExpCompiler *compiler, Trace *trace)=0
 
uint32_t EatsAtLeast (bool not_at_start)
 
virtual EatsAtLeastInfo EatsAtLeastFromLoopEntry ()
 
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, ChoiceNode *predecessor)
 
virtual void GetQuickCheckDetails (QuickCheckDetails *details, RegExpCompiler *compiler, int characters_filled_in, bool not_at_start)=0
 
virtual void GetQuickCheckDetailsFromLoopEntry (QuickCheckDetails *details, RegExpCompiler *compiler, int characters_filled_in, bool not_at_start)
 
virtual int GreedyLoopTextLength ()
 
virtual RegExpNodeGetSuccessorOfOmnivorousTextNode (RegExpCompiler *compiler)
 
bool KeepRecursing (RegExpCompiler *compiler)
 
virtual void FillInBMInfo (Isolate *isolate, int offset, int budget, BoyerMooreLookahead *bm, bool not_at_start)
 
virtual RegExpNodeFilterOneByte (int depth, RegExpCompiler *compiler)
 
RegExpNodereplacement ()
 
RegExpNodeset_replacement (RegExpNode *replacement)
 
void SaveBMInfo (BoyerMooreLookahead *bm, bool not_at_start, int offset)
 
Labellabel ()
 
bool on_work_list ()
 
void set_on_work_list (bool value)
 
NodeInfoinfo ()
 
const EatsAtLeastInfoeats_at_least_info () const
 
void set_eats_at_least_info (const EatsAtLeastInfo &eats_at_least)
 
void SetDoNotInline ()
 
BoyerMooreLookaheadbm_info (bool not_at_start)
 
virtual SeqRegExpNodeAsSeqRegExpNode ()
 
Zonezone () const
 
- Public Member Functions inherited from v8::internal::ZoneObject
void * operator new (size_t, Zone *)=delete
 
void * operator new (size_t size, void *ptr)
 
void operator delete (void *, size_t)
 
void operator delete (void *pointer, Zone *zone)=delete
 

Static Public Attributes

static const int kNodeIsTooComplexForGreedyLoops = kMinInt
 
static const int kRecursionBudget = 200
 
static const int kMaxCopiesCodeGenerated = 10
 

Protected Types

enum  LimitResult { DONE , CONTINUE }
 

Protected Member Functions

LimitResult LimitVersions (RegExpCompiler *compiler, Trace *trace)
 
void set_bm_info (bool not_at_start, BoyerMooreLookahead *bm)
 

Protected Attributes

RegExpNodereplacement_
 

Private Attributes

Label label_
 
bool on_work_list_
 
NodeInfo info_
 
EatsAtLeastInfo eats_at_least_
 
int trace_count_
 
BoyerMooreLookaheadbm_info_ [2]
 
Zonezone_
 

Static Private Attributes

static const int kFirstCharBudget = 10
 

Detailed Description

Definition at line 133 of file regexp-nodes.h.

Member Enumeration Documentation

◆ LimitResult

Enumerator
DONE 
CONTINUE 

Definition at line 274 of file regexp-nodes.h.

Constructor & Destructor Documentation

◆ RegExpNode()

v8::internal::RegExpNode::RegExpNode ( Zone * zone)
inlineexplicit

Definition at line 135 of file regexp-nodes.h.

◆ ~RegExpNode()

v8::internal::RegExpNode::~RegExpNode ( )
virtualdefault

Member Function Documentation

◆ Accept()

◆ AsSeqRegExpNode()

virtual SeqRegExpNode * v8::internal::RegExpNode::AsSeqRegExpNode ( )
inlinevirtual

Reimplemented in v8::internal::SeqRegExpNode.

Definition at line 269 of file regexp-nodes.h.

◆ bm_info()

BoyerMooreLookahead * v8::internal::RegExpNode::bm_info ( bool not_at_start)
inline

Definition at line 260 of file regexp-nodes.h.

Here is the caller graph for this function:

◆ eats_at_least_info()

const EatsAtLeastInfo * v8::internal::RegExpNode::eats_at_least_info ( ) const
inline

Definition at line 246 of file regexp-nodes.h.

◆ EatsAtLeast()

uint32_t v8::internal::RegExpNode::EatsAtLeast ( bool not_at_start)

Definition at line 1506 of file regexp-compiler.cc.

Here is the caller graph for this function:

◆ EatsAtLeastFromLoopEntry()

EatsAtLeastInfo v8::internal::RegExpNode::EatsAtLeastFromLoopEntry ( )
virtual

Reimplemented in v8::internal::LoopChoiceNode.

Definition at line 1511 of file regexp-compiler.cc.

Here is the call graph for this function:

◆ Emit()

virtual void v8::internal::RegExpNode::Emit ( RegExpCompiler * compiler,
Trace * trace )
pure virtual

Implemented in v8::internal::ActionNode, v8::internal::AssertionNode, v8::internal::BackReferenceNode, v8::internal::ChoiceNode, v8::internal::EndNode, v8::internal::LoopChoiceNode, v8::internal::NegativeSubmatchSuccess, and v8::internal::TextNode.

Here is the caller graph for this function:

◆ EmitQuickCheck()

bool v8::internal::RegExpNode::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,
ChoiceNode * predecessor )

Definition at line 1575 of file regexp-compiler.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FillInBMInfo()

virtual void v8::internal::RegExpNode::FillInBMInfo ( Isolate * isolate,
int offset,
int budget,
BoyerMooreLookahead * bm,
bool not_at_start )
inlinevirtual

Reimplemented in v8::internal::ActionNode, v8::internal::AssertionNode, v8::internal::BackReferenceNode, v8::internal::ChoiceNode, v8::internal::EndNode, v8::internal::LoopChoiceNode, v8::internal::NegativeLookaroundChoiceNode, v8::internal::SeqRegExpNode, and v8::internal::TextNode.

Definition at line 204 of file regexp-nodes.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FilterOneByte()

virtual RegExpNode * v8::internal::RegExpNode::FilterOneByte ( int depth,
RegExpCompiler * compiler )
inlinevirtual

Reimplemented in v8::internal::ChoiceNode, v8::internal::LoopChoiceNode, v8::internal::NegativeLookaroundChoiceNode, v8::internal::SeqRegExpNode, and v8::internal::TextNode.

Definition at line 212 of file regexp-nodes.h.

Here is the caller graph for this function:

◆ GetQuickCheckDetails()

virtual void v8::internal::RegExpNode::GetQuickCheckDetails ( QuickCheckDetails * details,
RegExpCompiler * compiler,
int characters_filled_in,
bool not_at_start )
pure virtual

Implemented in v8::internal::ActionNode, v8::internal::AssertionNode, v8::internal::BackReferenceNode, v8::internal::ChoiceNode, v8::internal::EndNode, v8::internal::LoopChoiceNode, v8::internal::NegativeLookaroundChoiceNode, and v8::internal::TextNode.

Here is the caller graph for this function:

◆ GetQuickCheckDetailsFromLoopEntry()

void v8::internal::RegExpNode::GetQuickCheckDetailsFromLoopEntry ( QuickCheckDetails * details,
RegExpCompiler * compiler,
int characters_filled_in,
bool not_at_start )
virtual

Reimplemented in v8::internal::LoopChoiceNode.

Definition at line 1520 of file regexp-compiler.cc.

Here is the call graph for this function:

◆ GetSuccessorOfOmnivorousTextNode()

virtual RegExpNode * v8::internal::RegExpNode::GetSuccessorOfOmnivorousTextNode ( RegExpCompiler * compiler)
inlinevirtual

Reimplemented in v8::internal::TextNode.

Definition at line 192 of file regexp-nodes.h.

Here is the caller graph for this function:

◆ GreedyLoopTextLength()

virtual int v8::internal::RegExpNode::GreedyLoopTextLength ( )
inlinevirtual

Reimplemented in v8::internal::ActionNode, and v8::internal::TextNode.

Definition at line 189 of file regexp-nodes.h.

◆ info()

NodeInfo * v8::internal::RegExpNode::info ( )
inline

Definition at line 245 of file regexp-nodes.h.

Here is the caller graph for this function:

◆ KeepRecursing()

bool v8::internal::RegExpNode::KeepRecursing ( RegExpCompiler * compiler)

Definition at line 1396 of file regexp-compiler.cc.

Here is the caller graph for this function:

◆ label()

Label * v8::internal::RegExpNode::label ( )
inline

Definition at line 234 of file regexp-nodes.h.

Here is the caller graph for this function:

◆ LimitVersions()

RegExpNode::LimitResult v8::internal::RegExpNode::LimitVersions ( RegExpCompiler * compiler,
Trace * trace )
protected

Definition at line 1355 of file regexp-compiler.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ on_work_list()

bool v8::internal::RegExpNode::on_work_list ( )
inline

Definition at line 242 of file regexp-nodes.h.

◆ replacement()

RegExpNode * v8::internal::RegExpNode::replacement ( )
inline

Definition at line 216 of file regexp-nodes.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SaveBMInfo()

void v8::internal::RegExpNode::SaveBMInfo ( BoyerMooreLookahead * bm,
bool not_at_start,
int offset )
inline

Definition at line 230 of file regexp-nodes.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ set_bm_info()

void v8::internal::RegExpNode::set_bm_info ( bool not_at_start,
BoyerMooreLookahead * bm )
inlineprotected

Definition at line 279 of file regexp-nodes.h.

Here is the caller graph for this function:

◆ set_eats_at_least_info()

void v8::internal::RegExpNode::set_eats_at_least_info ( const EatsAtLeastInfo & eats_at_least)
inline

Definition at line 247 of file regexp-nodes.h.

◆ set_on_work_list()

void v8::internal::RegExpNode::set_on_work_list ( bool value)
inline

Definition at line 243 of file regexp-nodes.h.

◆ set_replacement()

RegExpNode * v8::internal::RegExpNode::set_replacement ( RegExpNode * replacement)
inline

Definition at line 220 of file regexp-nodes.h.

Here is the call graph for this function:

◆ SetDoNotInline()

void v8::internal::RegExpNode::SetDoNotInline ( )
inline

Definition at line 258 of file regexp-nodes.h.

◆ zone()

Zone * v8::internal::RegExpNode::zone ( ) const
inline

Definition at line 271 of file regexp-nodes.h.

Here is the caller graph for this function:

Member Data Documentation

◆ bm_info_

BoyerMooreLookahead* v8::internal::RegExpNode::bm_info_[2]
private

Definition at line 299 of file regexp-nodes.h.

◆ eats_at_least_

EatsAtLeastInfo v8::internal::RegExpNode::eats_at_least_
private

Definition at line 291 of file regexp-nodes.h.

◆ info_

NodeInfo v8::internal::RegExpNode::info_
private

Definition at line 287 of file regexp-nodes.h.

◆ kFirstCharBudget

const int v8::internal::RegExpNode::kFirstCharBudget = 10
staticprivate

Definition at line 284 of file regexp-nodes.h.

◆ kMaxCopiesCodeGenerated

const int v8::internal::RegExpNode::kMaxCopiesCodeGenerated = 10
static

Definition at line 240 of file regexp-nodes.h.

◆ kNodeIsTooComplexForGreedyLoops

const int v8::internal::RegExpNode::kNodeIsTooComplexForGreedyLoops = kMinInt
static

Definition at line 188 of file regexp-nodes.h.

◆ kRecursionBudget

const int v8::internal::RegExpNode::kRecursionBudget = 200
static

Definition at line 202 of file regexp-nodes.h.

◆ label_

Label v8::internal::RegExpNode::label_
private

Definition at line 285 of file regexp-nodes.h.

◆ on_work_list_

bool v8::internal::RegExpNode::on_work_list_
private

Definition at line 286 of file regexp-nodes.h.

◆ replacement_

RegExpNode* v8::internal::RegExpNode::replacement_
protected

Definition at line 275 of file regexp-nodes.h.

◆ trace_count_

int v8::internal::RegExpNode::trace_count_
private

Definition at line 298 of file regexp-nodes.h.

◆ zone_

Zone* v8::internal::RegExpNode::zone_
private

Definition at line 301 of file regexp-nodes.h.


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