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

#include <variable-reducer.h>

Inheritance diagram for v8::internal::compiler::turboshaft::VariableReducer< AfterNext >:
Collaboration diagram for v8::internal::compiler::turboshaft::VariableReducer< AfterNext >:

Classes

struct  GetActiveLoopVariablesIndex
 
struct  VariableTable
 

Public Member Functions

void Bind (Block *new_block)
 
void RestoreTemporaryVariableSnapshotAfter (const Block *block)
 
void CloseTemporaryVariableSnapshot ()
 
V< None > REDUCE Goto (Block *destination, bool is_backedge)
 
OpIndex GetVariable (Variable var)
 
OpIndex GetPredecessorValue (Variable var, int predecessor_index)
 
void SetVariable (Variable var, OpIndex new_index)
 
template<typename Rep >
void Set (Variable var, V< Rep > value)
 
Variable NewLoopInvariantVariable (MaybeRegisterRepresentation rep)
 
Variable NewVariable (MaybeRegisterRepresentation rep)
 
void SealAndSaveVariableSnapshot ()
 
- Public Member Functions inherited from v8::internal::compiler::turboshaft::RequiredOptimizationReducer< AfterNext >
OpIndex REDUCE Phi (base::Vector< const OpIndex > inputs, RegisterRepresentation rep)
 

Private Types

using Next = RequiredOptimizationReducer<AfterNext>
 
using Snapshot = SnapshotTable<OpIndex, VariableData>::Snapshot
 

Private Member Functions

OpIndex MergeOpIndices (base::Vector< const OpIndex > inputs, MaybeRegisterRepresentation maybe_rep)
 
OpIndex MergeFrameState (base::Vector< const OpIndex > frame_states_indices)
 

Private Attributes

VariableTable table_ {__ phase_zone()}
 
const Blockcurrent_block_ = nullptr
 
GrowingBlockSidetable< std::optional< Snapshot > > block_to_snapshot_mapping_
 
bool is_temporary_ = false
 
ZoneVector< Snapshotpredecessors_ {__ phase_zone()}
 
ZoneAbslFlatHashMap< BlockIndex, std::optional< ZoneVector< std::pair< Variable, OpIndex > > > > loop_pending_phis_ {__ phase_zone()}
 

Detailed Description

template<class AfterNext>
class v8::internal::compiler::turboshaft::VariableReducer< AfterNext >

Definition at line 58 of file variable-reducer.h.

Member Typedef Documentation

◆ Next

template<class AfterNext >
using v8::internal::compiler::turboshaft::VariableReducer< AfterNext >::Next = RequiredOptimizationReducer<AfterNext>
private

Definition at line 59 of file variable-reducer.h.

◆ Snapshot

template<class AfterNext >
using v8::internal::compiler::turboshaft::VariableReducer< AfterNext >::Snapshot = SnapshotTable<OpIndex, VariableData>::Snapshot
private

Definition at line 60 of file variable-reducer.h.

Member Function Documentation

◆ Bind()

template<class AfterNext >
void v8::internal::compiler::turboshaft::VariableReducer< AfterNext >::Bind ( Block * new_block)
inline

Definition at line 94 of file variable-reducer.h.

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

◆ CloseTemporaryVariableSnapshot()

template<class AfterNext >
void v8::internal::compiler::turboshaft::VariableReducer< AfterNext >::CloseTemporaryVariableSnapshot ( )
inline

Definition at line 155 of file variable-reducer.h.

Here is the call graph for this function:

◆ GetPredecessorValue()

template<class AfterNext >
OpIndex v8::internal::compiler::turboshaft::VariableReducer< AfterNext >::GetPredecessorValue ( Variable var,
int predecessor_index )
inline

Definition at line 189 of file variable-reducer.h.

Here is the call graph for this function:

◆ GetVariable()

template<class AfterNext >
OpIndex v8::internal::compiler::turboshaft::VariableReducer< AfterNext >::GetVariable ( Variable var)
inline

Definition at line 187 of file variable-reducer.h.

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

◆ Goto()

template<class AfterNext >
V< None > REDUCE v8::internal::compiler::turboshaft::VariableReducer< AfterNext >::Goto ( Block * destination,
bool is_backedge )
inline

Definition at line 161 of file variable-reducer.h.

Here is the call graph for this function:

◆ MergeFrameState()

template<class AfterNext >
OpIndex v8::internal::compiler::turboshaft::VariableReducer< AfterNext >::MergeFrameState ( base::Vector< const OpIndex > frame_states_indices)
inlineprivate

Definition at line 245 of file variable-reducer.h.

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

◆ MergeOpIndices()

template<class AfterNext >
OpIndex v8::internal::compiler::turboshaft::VariableReducer< AfterNext >::MergeOpIndices ( base::Vector< const OpIndex > inputs,
MaybeRegisterRepresentation maybe_rep )
inlineprivate

Definition at line 230 of file variable-reducer.h.

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

◆ NewLoopInvariantVariable()

template<class AfterNext >
Variable v8::internal::compiler::turboshaft::VariableReducer< AfterNext >::NewLoopInvariantVariable ( MaybeRegisterRepresentation rep)
inline

Definition at line 207 of file variable-reducer.h.

Here is the call graph for this function:

◆ NewVariable()

template<class AfterNext >
Variable v8::internal::compiler::turboshaft::VariableReducer< AfterNext >::NewVariable ( MaybeRegisterRepresentation rep)
inline

Definition at line 211 of file variable-reducer.h.

Here is the call graph for this function:

◆ RestoreTemporaryVariableSnapshotAfter()

template<class AfterNext >
void v8::internal::compiler::turboshaft::VariableReducer< AfterNext >::RestoreTemporaryVariableSnapshotAfter ( const Block * block)
inline

Definition at line 149 of file variable-reducer.h.

Here is the call graph for this function:

◆ SealAndSaveVariableSnapshot()

template<class AfterNext >
void v8::internal::compiler::turboshaft::VariableReducer< AfterNext >::SealAndSaveVariableSnapshot ( )
inline

Definition at line 218 of file variable-reducer.h.

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

◆ Set()

template<class AfterNext >
template<typename Rep >
void v8::internal::compiler::turboshaft::VariableReducer< AfterNext >::Set ( Variable var,
V< Rep > value )
inline

Definition at line 199 of file variable-reducer.h.

Here is the call graph for this function:

◆ SetVariable()

template<class AfterNext >
void v8::internal::compiler::turboshaft::VariableReducer< AfterNext >::SetVariable ( Variable var,
OpIndex new_index )
inline

Definition at line 193 of file variable-reducer.h.

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

Member Data Documentation

◆ block_to_snapshot_mapping_

template<class AfterNext >
GrowingBlockSidetable<std::optional<Snapshot> > v8::internal::compiler::turboshaft::VariableReducer< AfterNext >::block_to_snapshot_mapping_
private
Initial value:
{
__ input_graph().block_count(), std::nullopt, __ phase_zone()}

Definition at line 313 of file variable-reducer.h.

◆ current_block_

template<class AfterNext >
const Block* v8::internal::compiler::turboshaft::VariableReducer< AfterNext >::current_block_ = nullptr
private

Definition at line 312 of file variable-reducer.h.

◆ is_temporary_

template<class AfterNext >
bool v8::internal::compiler::turboshaft::VariableReducer< AfterNext >::is_temporary_ = false
private

Definition at line 315 of file variable-reducer.h.

◆ loop_pending_phis_

template<class AfterNext >
ZoneAbslFlatHashMap<BlockIndex, std::optional<ZoneVector<std::pair<Variable, OpIndex> > > > v8::internal::compiler::turboshaft::VariableReducer< AfterNext >::loop_pending_phis_ {__ phase_zone()}
private

Definition at line 325 of file variable-reducer.h.

◆ predecessors_

template<class AfterNext >
ZoneVector<Snapshot> v8::internal::compiler::turboshaft::VariableReducer< AfterNext >::predecessors_ {__ phase_zone()}
private

Definition at line 319 of file variable-reducer.h.

◆ table_

template<class AfterNext >
VariableTable v8::internal::compiler::turboshaft::VariableReducer< AfterNext >::table_ {__ phase_zone()}
private

Definition at line 311 of file variable-reducer.h.


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