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

#include <loop-peeling-reducer.h>

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

Public Member Functions

V< None > REDUCE_INPUT_GRAPH Goto (V< None > ig_idx, const GotoOp &gto)
 
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 &stack_check)
 
OpIndex REDUCE_INPUT_GRAPH Phi (OpIndex ig_idx, const PhiOp &phi)
 

Private Types

enum class  PeelingStatus { kNotPeeling , kEmittingPeeledLoop , kEmittingUnpeeledBody }
 

Private Member Functions

void PeelFirstIteration (const Block *header)
 
bool CanPeelLoop (const Block *header)
 
bool IsPeeling () const
 
bool IsEmittingPeeledIteration () const
 
bool IsEmittingUnpeeledBody () const
 

Private Attributes

PeelingStatus peeling_ = PeelingStatus::kNotPeeling
 
const Blockcurrent_loop_header_ = nullptr
 
LoopFinder loop_finder_ {__ phase_zone(), &__ modifiable_input_graph()}
 
JSHeapBrokerbroker_ = __ data() -> broker()
 

Static Private Attributes

static constexpr int kMaxSizeForPeeling = 1000
 

Detailed Description

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

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

Member Enumeration Documentation

◆ PeelingStatus

template<class Next >
enum class v8::internal::compiler::turboshaft::LoopPeelingReducer::PeelingStatus
strongprivate
Enumerator
kNotPeeling 
kEmittingPeeledLoop 
kEmittingUnpeeledBody 

Definition at line 125 of file loop-peeling-reducer.h.

Member Function Documentation

◆ Call()

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

Definition at line 73 of file loop-peeling-reducer.h.

Here is the call graph for this function:

◆ CanPeelLoop()

template<class Next >
bool v8::internal::compiler::turboshaft::LoopPeelingReducer< Next >::CanPeelLoop ( const Block * header)
inlineprivate

Definition at line 163 of file loop-peeling-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::LoopPeelingReducer< Next >::Goto ( V< None > ig_idx,
const GotoOp & gto )
inline

Definition at line 49 of file loop-peeling-reducer.h.

Here is the call graph for this function:

◆ IsEmittingPeeledIteration()

template<class Next >
bool v8::internal::compiler::turboshaft::LoopPeelingReducer< Next >::IsEmittingPeeledIteration ( ) const
inlineprivate

Definition at line 184 of file loop-peeling-reducer.h.

Here is the caller graph for this function:

◆ IsEmittingUnpeeledBody()

template<class Next >
bool v8::internal::compiler::turboshaft::LoopPeelingReducer< Next >::IsEmittingUnpeeledBody ( ) const
inlineprivate

Definition at line 187 of file loop-peeling-reducer.h.

Here is the caller graph for this function:

◆ IsPeeling()

template<class Next >
bool v8::internal::compiler::turboshaft::LoopPeelingReducer< Next >::IsPeeling ( ) const
inlineprivate

Definition at line 181 of file loop-peeling-reducer.h.

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

◆ JSStackCheck()

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

Definition at line 88 of file loop-peeling-reducer.h.

Here is the call graph for this function:

◆ PeelFirstIteration()

template<class Next >
void v8::internal::compiler::turboshaft::LoopPeelingReducer< Next >::PeelFirstIteration ( const Block * header)
inlineprivate

Definition at line 131 of file loop-peeling-reducer.h.

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

◆ Phi()

template<class Next >
OpIndex REDUCE_INPUT_GRAPH v8::internal::compiler::turboshaft::LoopPeelingReducer< Next >::Phi ( OpIndex ig_idx,
const PhiOp & phi )
inline

Definition at line 110 of file loop-peeling-reducer.h.

Here is the call graph for this function:

Member Data Documentation

◆ broker_

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

Definition at line 195 of file loop-peeling-reducer.h.

◆ current_loop_header_

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

Definition at line 192 of file loop-peeling-reducer.h.

◆ kMaxSizeForPeeling

template<class Next >
int v8::internal::compiler::turboshaft::LoopPeelingReducer< Next >::kMaxSizeForPeeling = 1000
staticconstexprprivate

Definition at line 124 of file loop-peeling-reducer.h.

◆ loop_finder_

template<class Next >
LoopFinder v8::internal::compiler::turboshaft::LoopPeelingReducer< Next >::loop_finder_ {__ phase_zone(), &__ modifiable_input_graph()}
private

Definition at line 194 of file loop-peeling-reducer.h.

◆ peeling_

Definition at line 191 of file loop-peeling-reducer.h.


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