v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
v8::internal::compiler::turboshaft::LoopUnrollingReducer< Next > Class Template Reference

#include <loop-unrolling-reducer.h>

Inheritance diagram for v8::internal::compiler::turboshaft::LoopUnrollingReducer< Next >:
Collaboration diagram for v8::internal::compiler::turboshaft::LoopUnrollingReducer< Next >:

Public Member Functions

V< None > REDUCE_INPUT_GRAPH Goto (V< None > ig_idx, const GotoOp &gto)
 
V< None > REDUCE_INPUT_GRAPH Branch (V< None > ig_idx, const BranchOp &branch)
 
V< AnyOrNone > REDUCE_INPUT_GRAPH Call (V< AnyOrNone > ig_idx, const CallOp &call)
 
V< None > REDUCE_INPUT_GRAPH JSStackCheck (V< None > ig_idx, const JSStackCheckOp &check)
 

Private Types

enum class  UnrollingStatus { kNotUnrolling , kUnrolling , kRemoveLoop }
 

Private Member Functions

void RemoveLoop (const Block *header)
 
void FullyUnrollLoop (const Block *header)
 
void PartiallyUnrollLoop (const Block *header)
 
void FixLoopPhis (const Block *input_graph_loop, Block *output_graph_loop, const Block *backedge_block)
 
bool IsRunningBuiltinPipeline ()
 
bool StopUnrollingIfUnreachable (std::optional< Block * > output_graph_header=std::nullopt)
 

Private Attributes

LoopUnrollingAnalyzeranalyzer_
 
UnrollingStatus unrolling_ = UnrollingStatus::kNotUnrolling
 
bool skip_next_stack_check_ = false
 
const Blockcurrent_loop_header_ = nullptr
 
JSHeapBrokerbroker_ = __ data() -> broker()
 

Detailed Description

template<class Next>
class v8::internal::compiler::turboshaft::LoopUnrollingReducer< Next >

Definition at line 372 of file loop-unrolling-reducer.h.

Member Enumeration Documentation

◆ UnrollingStatus

template<class Next >
enum class v8::internal::compiler::turboshaft::LoopUnrollingReducer::UnrollingStatus
strongprivate
Enumerator
kNotUnrolling 
kUnrolling 
kRemoveLoop 

Definition at line 489 of file loop-unrolling-reducer.h.

Member Function Documentation

◆ Branch()

template<class Next >
V< None > REDUCE_INPUT_GRAPH v8::internal::compiler::turboshaft::LoopUnrollingReducer< Next >::Branch ( V< None > ig_idx,
const BranchOp & branch )
inline

Definition at line 418 of file loop-unrolling-reducer.h.

Here is the call graph for this function:

◆ Call()

template<class Next >
V< AnyOrNone > REDUCE_INPUT_GRAPH v8::internal::compiler::turboshaft::LoopUnrollingReducer< Next >::Call ( V< AnyOrNone > ig_idx,
const CallOp & call )
inline

Definition at line 451 of file loop-unrolling-reducer.h.

Here is the call graph for this function:

◆ FixLoopPhis()

template<class Next >
void v8::internal::compiler::turboshaft::LoopUnrollingReducer< Next >::FixLoopPhis ( const Block * input_graph_loop,
Block * output_graph_loop,
const Block * backedge_block )
private

Definition at line 605 of file loop-unrolling-reducer.h.

Here is the call graph for this function:

◆ FullyUnrollLoop()

template<class Next >
void v8::internal::compiler::turboshaft::LoopUnrollingReducer< Next >::FullyUnrollLoop ( const Block * header)
private

Definition at line 671 of file loop-unrolling-reducer.h.

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

◆ Goto()

template<class Next >
V< None > REDUCE_INPUT_GRAPH v8::internal::compiler::turboshaft::LoopUnrollingReducer< Next >::Goto ( V< None > ig_idx,
const GotoOp & gto )
inline

Definition at line 385 of file loop-unrolling-reducer.h.

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

◆ IsRunningBuiltinPipeline()

template<class Next >
bool v8::internal::compiler::turboshaft::LoopUnrollingReducer< Next >::IsRunningBuiltinPipeline ( )
inlineprivate

Definition at line 507 of file loop-unrolling-reducer.h.

Here is the caller graph for this function:

◆ JSStackCheck()

template<class Next >
V< None > REDUCE_INPUT_GRAPH v8::internal::compiler::turboshaft::LoopUnrollingReducer< Next >::JSStackCheck ( V< None > ig_idx,
const JSStackCheckOp & check )
inline

Definition at line 470 of file loop-unrolling-reducer.h.

Here is the call graph for this function:

◆ PartiallyUnrollLoop()

template<class Next >
void v8::internal::compiler::turboshaft::LoopUnrollingReducer< Next >::PartiallyUnrollLoop ( const Block * header)
private

Definition at line 543 of file loop-unrolling-reducer.h.

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

◆ RemoveLoop()

template<class Next >
void v8::internal::compiler::turboshaft::LoopUnrollingReducer< Next >::RemoveLoop ( const Block * header)
private

Definition at line 657 of file loop-unrolling-reducer.h.

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

◆ StopUnrollingIfUnreachable()

template<class Next >
bool v8::internal::compiler::turboshaft::LoopUnrollingReducer< Next >::StopUnrollingIfUnreachable ( std::optional< Block * > output_graph_header = std::nullopt)
inlineprivate

Definition at line 510 of file loop-unrolling-reducer.h.

Member Data Documentation

◆ analyzer_

template<class Next >
LoopUnrollingAnalyzer& v8::internal::compiler::turboshaft::LoopUnrollingReducer< Next >::analyzer_
private
Initial value:
=
*__ input_graph().loop_unrolling_analyzer()

Definition at line 532 of file loop-unrolling-reducer.h.

◆ broker_

template<class Next >
JSHeapBroker* v8::internal::compiler::turboshaft::LoopUnrollingReducer< Next >::broker_ = __ data() -> broker()
private

Definition at line 539 of file loop-unrolling-reducer.h.

◆ current_loop_header_

template<class Next >
const Block* v8::internal::compiler::turboshaft::LoopUnrollingReducer< Next >::current_loop_header_ = nullptr
private

Definition at line 538 of file loop-unrolling-reducer.h.

◆ skip_next_stack_check_

template<class Next >
bool v8::internal::compiler::turboshaft::LoopUnrollingReducer< Next >::skip_next_stack_check_ = false
private

Definition at line 536 of file loop-unrolling-reducer.h.

◆ unrolling_

Definition at line 535 of file loop-unrolling-reducer.h.


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