v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
v8::internal::compiler::turboshaft::GeneratorAnalyzer Class Reference
Collaboration diagram for v8::internal::compiler::turboshaft::GeneratorAnalyzer:

Public Member Functions

 GeneratorAnalyzer (Zone *phase_zone, maglev::MaglevGraphLabeller *labeller)
 
void Analyze (maglev::Graph *graph)
 
bool JumpBypassesHeader (const maglev::BasicBlock *target)
 
const maglev::BasicBlockGetInnermostBypassedHeader (const maglev::BasicBlock *target)
 
bool HeaderIsBypassed (const maglev::BasicBlock *header)
 
const maglev::BasicBlockGetLoopHeader (const maglev::BasicBlock *node)
 
bool has_header_bypasses () const
 

Private Member Functions

void FindLoopBody (maglev::BlockConstReverseIterator it)
 
void FindLoopHeaderBypasses (maglev::Graph *graph)
 
void RecordHeadersForBypass (maglev::BasicBlock *initial_target, const maglev::BasicBlock *innermost_header)
 

Private Attributes

maglev::MaglevGraphLabellerlabeller_
 
ZoneAbslFlatHashMap< const maglev::BasicBlock *, const maglev::BasicBlock * > block_to_header_
 
std::unordered_map< const maglev::BasicBlock *, const maglev::BasicBlock * > block_to_innermost_bypassed_header_
 
std::unordered_set< const maglev::BasicBlock * > bypassed_headers_
 
ZoneVector< const maglev::BasicBlock * > visit_queue_
 

Detailed Description

Definition at line 122 of file turbolev-graph-builder.cc.

Constructor & Destructor Documentation

◆ GeneratorAnalyzer()

v8::internal::compiler::turboshaft::GeneratorAnalyzer::GeneratorAnalyzer ( Zone * phase_zone,
maglev::MaglevGraphLabeller * labeller )
inlineexplicit

Definition at line 259 of file turbolev-graph-builder.cc.

Member Function Documentation

◆ Analyze()

void v8::internal::compiler::turboshaft::GeneratorAnalyzer::Analyze ( maglev::Graph * graph)
inline

Definition at line 267 of file turbolev-graph-builder.cc.

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

◆ FindLoopBody()

void v8::internal::compiler::turboshaft::GeneratorAnalyzer::FindLoopBody ( maglev::BlockConstReverseIterator it)
inlineprivate

Definition at line 307 of file turbolev-graph-builder.cc.

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

◆ FindLoopHeaderBypasses()

void v8::internal::compiler::turboshaft::GeneratorAnalyzer::FindLoopHeaderBypasses ( maglev::Graph * graph)
inlineprivate

Definition at line 333 of file turbolev-graph-builder.cc.

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

◆ GetInnermostBypassedHeader()

const maglev::BasicBlock * v8::internal::compiler::turboshaft::GeneratorAnalyzer::GetInnermostBypassedHeader ( const maglev::BasicBlock * target)
inline

Definition at line 281 of file turbolev-graph-builder.cc.

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

◆ GetLoopHeader()

const maglev::BasicBlock * v8::internal::compiler::turboshaft::GeneratorAnalyzer::GetLoopHeader ( const maglev::BasicBlock * node)
inline

Definition at line 292 of file turbolev-graph-builder.cc.

Here is the caller graph for this function:

◆ has_header_bypasses()

bool v8::internal::compiler::turboshaft::GeneratorAnalyzer::has_header_bypasses ( ) const
inline

Definition at line 299 of file turbolev-graph-builder.cc.

Here is the caller graph for this function:

◆ HeaderIsBypassed()

bool v8::internal::compiler::turboshaft::GeneratorAnalyzer::HeaderIsBypassed ( const maglev::BasicBlock * header)
inline

Definition at line 287 of file turbolev-graph-builder.cc.

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

◆ JumpBypassesHeader()

bool v8::internal::compiler::turboshaft::GeneratorAnalyzer::JumpBypassesHeader ( const maglev::BasicBlock * target)
inline

Definition at line 277 of file turbolev-graph-builder.cc.

Here is the caller graph for this function:

◆ RecordHeadersForBypass()

void v8::internal::compiler::turboshaft::GeneratorAnalyzer::RecordHeadersForBypass ( maglev::BasicBlock * initial_target,
const maglev::BasicBlock * innermost_header )
inlineprivate

Definition at line 383 of file turbolev-graph-builder.cc.

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

Member Data Documentation

◆ block_to_header_

ZoneAbslFlatHashMap<const maglev::BasicBlock*, const maglev::BasicBlock*> v8::internal::compiler::turboshaft::GeneratorAnalyzer::block_to_header_
private

Definition at line 399 of file turbolev-graph-builder.cc.

◆ block_to_innermost_bypassed_header_

std::unordered_map<const maglev::BasicBlock*, const maglev::BasicBlock*> v8::internal::compiler::turboshaft::GeneratorAnalyzer::block_to_innermost_bypassed_header_
private

Definition at line 403 of file turbolev-graph-builder.cc.

◆ bypassed_headers_

std::unordered_set<const maglev::BasicBlock*> v8::internal::compiler::turboshaft::GeneratorAnalyzer::bypassed_headers_
private

Definition at line 405 of file turbolev-graph-builder.cc.

◆ labeller_

maglev::MaglevGraphLabeller* v8::internal::compiler::turboshaft::GeneratorAnalyzer::labeller_
private

Definition at line 395 of file turbolev-graph-builder.cc.

◆ visit_queue_

ZoneVector<const maglev::BasicBlock*> v8::internal::compiler::turboshaft::GeneratorAnalyzer::visit_queue_
private

Definition at line 410 of file turbolev-graph-builder.cc.


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