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

#include <assembler.h>

Inheritance diagram for v8::internal::compiler::turboshaft::LoopLabel< Ts >:
Collaboration diagram for v8::internal::compiler::turboshaft::LoopLabel< Ts >:

Public Types

using values_t = typename super::values_t
 
- Public Types inherited from v8::internal::compiler::turboshaft::LabelBase< true, Ts... >
using values_t
 
using const_or_values_t
 
using recorded_values_t
 

Public Member Functions

template<typename Reducer >
 LoopLabel (Reducer *reducer)
 
 LoopLabel (LoopLabel &&other) V8_NOEXCEPT
 
Blockloop_header () const
 
template<typename A >
void Goto (A &assembler, const values_t &values)
 
template<typename A >
void GotoIf (A &assembler, OpIndex condition, BranchHint hint, const values_t &values)
 
template<typename A >
void GotoIfNot (A &assembler, OpIndex condition, BranchHint hint, const values_t &values)
 
template<typename A >
base::prepend_tuple_type< bool, values_tBind (A &assembler)
 
template<typename A >
base::prepend_tuple_type< bool, values_tBindLoop (A &assembler)
 
template<typename A >
void EndLoop (A &assembler)
 
- Public Member Functions inherited from v8::internal::compiler::turboshaft::LabelBase< true, Ts... >
Blockblock ()
 
bool has_incoming_jump () const
 
void Goto (A &assembler, const values_t &values)
 
void GotoIf (A &assembler, OpIndex condition, BranchHint hint, const values_t &values)
 
void GotoIfNot (A &assembler, OpIndex condition, BranchHint hint, const values_t &values)
 
base::prepend_tuple_type< bool, values_tBind (A &assembler)
 

Private Types

using super = LabelBase<true, Ts...>
 
using BlockData = typename super::BlockData
 

Private Member Functions

 LoopLabel (const LoopLabel &)=delete
 
LoopLabeloperator= (const LoopLabel &)=delete
 
template<typename A >
void FixLoopPhis (A &assembler, const typename super::values_t &values)
 
template<size_t I, typename A >
void FixLoopPhi (A &assembler, const typename super::values_t &values)
 

Static Private Member Functions

template<typename A >
static values_t MaterializeLoopPhis (A &assembler, BlockData &data)
 
template<typename A , size_t... indices>
static values_t MaterializeLoopPhisImpl (A &assembler, BlockData &data, std::index_sequence< indices... >)
 

Private Attributes

BlockData loop_header_data_
 
std::optional< values_tpending_loop_phis_
 

Additional Inherited Members

- Static Public Attributes inherited from v8::internal::compiler::turboshaft::LabelBase< true, Ts... >
static constexpr bool is_loop
 
- Protected Member Functions inherited from v8::internal::compiler::turboshaft::LabelBase< true, Ts... >
 LabelBase (const LabelBase &)=delete
 
 LabelBase (Block *block)
 
 LabelBase (LabelBase &&other) V8_NOEXCEPT
 
LabelBaseoperator= (const LabelBase &)=delete
 
values_t MaterializePhis (A &assembler)
 
- Static Protected Member Functions inherited from v8::internal::compiler::turboshaft::LabelBase< true, Ts... >
static void RecordValues (Block *source, BlockData &data, const values_t &values)
 
static void RecordValuesImpl (BlockData &data, Block *source, const values_t &values, std::index_sequence< indices... >)
 
static values_t MaterializePhisImpl (A &assembler, BlockData &data, std::index_sequence< indices... >)
 
- Protected Attributes inherited from v8::internal::compiler::turboshaft::LabelBase< true, Ts... >
BlockData data_
 
bool has_incoming_jump_
 
- Static Protected Attributes inherited from v8::internal::compiler::turboshaft::LabelBase< true, Ts... >
static constexpr size_t size
 

Detailed Description

template<typename... Ts>
class v8::internal::compiler::turboshaft::LoopLabel< Ts >

Definition at line 544 of file assembler.h.

Member Typedef Documentation

◆ BlockData

template<typename... Ts>
using v8::internal::compiler::turboshaft::LoopLabel< Ts >::BlockData = typename super::BlockData
private

Definition at line 546 of file assembler.h.

◆ super

template<typename... Ts>
using v8::internal::compiler::turboshaft::LoopLabel< Ts >::super = LabelBase<true, Ts...>
private

Definition at line 545 of file assembler.h.

◆ values_t

template<typename... Ts>
using v8::internal::compiler::turboshaft::LoopLabel< Ts >::values_t = typename super::values_t

Definition at line 552 of file assembler.h.

Constructor & Destructor Documentation

◆ LoopLabel() [1/3]

template<typename... Ts>
v8::internal::compiler::turboshaft::LoopLabel< Ts >::LoopLabel ( const LoopLabel< Ts > & )
privatedelete

◆ LoopLabel() [2/3]

template<typename... Ts>
template<typename Reducer >
v8::internal::compiler::turboshaft::LoopLabel< Ts >::LoopLabel ( Reducer * reducer)
inlineexplicit

Definition at line 554 of file assembler.h.

◆ LoopLabel() [3/3]

template<typename... Ts>
v8::internal::compiler::turboshaft::LoopLabel< Ts >::LoopLabel ( LoopLabel< Ts > && other)
inline

Definition at line 558 of file assembler.h.

Member Function Documentation

◆ Bind()

template<typename... Ts>
template<typename A >
base::prepend_tuple_type< bool, values_t > v8::internal::compiler::turboshaft::LoopLabel< Ts >::Bind ( A & assembler)
inline

Definition at line 626 of file assembler.h.

Here is the call graph for this function:

◆ BindLoop()

template<typename... Ts>
template<typename A >
base::prepend_tuple_type< bool, values_t > v8::internal::compiler::turboshaft::LoopLabel< Ts >::BindLoop ( A & assembler)
inline

Definition at line 632 of file assembler.h.

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

◆ EndLoop()

template<typename... Ts>
template<typename A >
void v8::internal::compiler::turboshaft::LoopLabel< Ts >::EndLoop ( A & assembler)
inline

Definition at line 645 of file assembler.h.

Here is the call graph for this function:

◆ FixLoopPhi()

template<typename... Ts>
template<size_t I, typename A >
void v8::internal::compiler::turboshaft::LoopLabel< Ts >::FixLoopPhi ( A & assembler,
const typename super::values_t & values )
inlineprivate

Definition at line 696 of file assembler.h.

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

◆ FixLoopPhis()

template<typename... Ts>
template<typename A >
void v8::internal::compiler::turboshaft::LoopLabel< Ts >::FixLoopPhis ( A & assembler,
const typename super::values_t & values )
inlineprivate

Definition at line 687 of file assembler.h.

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

◆ Goto()

template<typename... Ts>
template<typename A >
void v8::internal::compiler::turboshaft::LoopLabel< Ts >::Goto ( A & assembler,
const values_t & values )
inline

Definition at line 566 of file assembler.h.

Here is the call graph for this function:

◆ GotoIf()

template<typename... Ts>
template<typename A >
void v8::internal::compiler::turboshaft::LoopLabel< Ts >::GotoIf ( A & assembler,
OpIndex condition,
BranchHint hint,
const values_t & values )
inline

Definition at line 584 of file assembler.h.

Here is the call graph for this function:

◆ GotoIfNot()

template<typename... Ts>
template<typename A >
void v8::internal::compiler::turboshaft::LoopLabel< Ts >::GotoIfNot ( A & assembler,
OpIndex condition,
BranchHint hint,
const values_t & values )
inline

Definition at line 605 of file assembler.h.

Here is the call graph for this function:

◆ loop_header()

template<typename... Ts>
Block * v8::internal::compiler::turboshaft::LoopLabel< Ts >::loop_header ( ) const
inline

Definition at line 563 of file assembler.h.

◆ MaterializeLoopPhis()

template<typename... Ts>
template<typename A >
static values_t v8::internal::compiler::turboshaft::LoopLabel< Ts >::MaterializeLoopPhis ( A & assembler,
BlockData & data )
inlinestaticprivate

Definition at line 666 of file assembler.h.

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

◆ MaterializeLoopPhisImpl()

template<typename... Ts>
template<typename A , size_t... indices>
static values_t v8::internal::compiler::turboshaft::LoopLabel< Ts >::MaterializeLoopPhisImpl ( A & assembler,
BlockData & data,
std::index_sequence< indices... >  )
inlinestaticprivate

Definition at line 672 of file assembler.h.

Here is the caller graph for this function:

◆ operator=()

template<typename... Ts>
LoopLabel & v8::internal::compiler::turboshaft::LoopLabel< Ts >::operator= ( const LoopLabel< Ts > & )
privatedelete

Member Data Documentation

◆ loop_header_data_

template<typename... Ts>
BlockData v8::internal::compiler::turboshaft::LoopLabel< Ts >::loop_header_data_
private

Definition at line 714 of file assembler.h.

◆ pending_loop_phis_

template<typename... Ts>
std::optional<values_t> v8::internal::compiler::turboshaft::LoopLabel< Ts >::pending_loop_phis_
private

Definition at line 715 of file assembler.h.


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