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

#include <late-load-elimination-reducer.h>

Collaboration diagram for v8::internal::compiler::turboshaft::LateLoadEliminationAnalyzer:

Classes

struct  Snapshot
 

Public Types

enum class  RawBaseAssumption { kNoInnerPointer , kMaybeInnerPointer }
 
using AliasTable = SparseOpIndexSnapshotTable<bool>
 
using AliasKey = AliasTable::Key
 
using AliasSnapshot = AliasTable::Snapshot
 
using MapTable = SparseOpIndexSnapshotTable<MapMaskAndOr>
 
using MapKey = MapTable::Key
 
using MapSnapshot = MapTable::Snapshot
 
using MemoryKey = MemoryContentTable::Key
 
using MemorySnapshot = MemoryContentTable::Snapshot
 
using Replacement = LoadEliminationReplacement
 

Public Member Functions

 LateLoadEliminationAnalyzer (PipelineData *data, Graph &graph, Zone *phase_zone, JSHeapBroker *broker, RawBaseAssumption raw_base_assumption)
 
void Run ()
 
Replacement GetReplacement (OpIndex index)
 

Private Member Functions

void ProcessBlock (const Block &block, bool compute_start_snapshot)
 
void ProcessLoad (OpIndex op_idx, const LoadOp &op)
 
void ProcessStore (OpIndex op_idx, const StoreOp &op)
 
void ProcessAllocate (OpIndex op_idx, const AllocateOp &op)
 
void ProcessCall (OpIndex op_idx, const CallOp &op)
 
void ProcessAssumeMap (OpIndex op_idx, const AssumeMapOp &op)
 
void ProcessChange (OpIndex op_idx, const ChangeOp &change)
 
void DcheckWordBinop (OpIndex op_idx, const WordBinopOp &binop)
 
template<bool for_loop_revisit = false>
bool BeginBlock (const Block *block)
 
void FinishBlock (const Block *block)
 
void SealAndDiscard ()
 
void StoreLoopSnapshotInForwardPredecessor (const Block &loop_header)
 
bool BackedgeHasSnapshot (const Block &loop_header) const
 
void InvalidateAllNonAliasingInputs (const Operation &op)
 
void InvalidateIfAlias (OpIndex op_idx)
 

Private Attributes

PipelineDatadata_
 
Graphgraph_
 
Zonephase_zone_
 
JSHeapBrokerbroker_
 
RawBaseAssumption raw_base_assumption_
 
FixedOpIndexSidetable< Replacementreplacements_
 
std::map< OpIndex, base::SmallMap< std::map< OpIndex, OpIndex >, 4 > > int32_truncated_loads_
 
AliasTable non_aliasing_objects_
 
MapTable object_maps_
 
MemoryContentTable memory_
 
FixedBlockSidetable< std::optional< Snapshot > > block_to_snapshot_mapping_
 
ZoneVector< AliasSnapshotpredecessor_alias_snapshots_
 
ZoneVector< MapSnapshotpredecessor_maps_snapshots_
 
ZoneVector< MemorySnapshotpredecessor_memory_snapshots_
 

Detailed Description

Definition at line 661 of file late-load-elimination-reducer.h.

Member Typedef Documentation

◆ AliasKey

◆ AliasSnapshot

◆ AliasTable

◆ MapKey

◆ MapSnapshot

◆ MapTable

◆ MemoryKey

◆ MemorySnapshot

◆ Replacement

Member Enumeration Documentation

◆ RawBaseAssumption

Enumerator
kNoInnerPointer 
kMaybeInnerPointer 

Definition at line 676 of file late-load-elimination-reducer.h.

Constructor & Destructor Documentation

◆ LateLoadEliminationAnalyzer()

v8::internal::compiler::turboshaft::LateLoadEliminationAnalyzer::LateLoadEliminationAnalyzer ( PipelineData * data,
Graph & graph,
Zone * phase_zone,
JSHeapBroker * broker,
RawBaseAssumption raw_base_assumption )
inline

Definition at line 681 of file late-load-elimination-reducer.h.

Member Function Documentation

◆ BackedgeHasSnapshot()

bool v8::internal::compiler::turboshaft::LateLoadEliminationAnalyzer::BackedgeHasSnapshot ( const Block & loop_header) const
private

Definition at line 636 of file late-load-elimination-reducer.cc.

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

◆ BeginBlock()

template<bool for_loop_revisit>
template bool v8::internal::compiler::turboshaft::LateLoadEliminationAnalyzer::BeginBlock< false > ( const Block * block)
private

Definition at line 644 of file late-load-elimination-reducer.cc.

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

◆ DcheckWordBinop()

void v8::internal::compiler::turboshaft::LateLoadEliminationAnalyzer::DcheckWordBinop ( OpIndex op_idx,
const WordBinopOp & binop )
private

Definition at line 501 of file late-load-elimination-reducer.cc.

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

◆ FinishBlock()

void v8::internal::compiler::turboshaft::LateLoadEliminationAnalyzer::FinishBlock ( const Block * block)
private

Definition at line 609 of file late-load-elimination-reducer.cc.

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

◆ GetReplacement()

Replacement v8::internal::compiler::turboshaft::LateLoadEliminationAnalyzer::GetReplacement ( OpIndex index)
inline

Definition at line 702 of file late-load-elimination-reducer.h.

Here is the caller graph for this function:

◆ InvalidateAllNonAliasingInputs()

void v8::internal::compiler::turboshaft::LateLoadEliminationAnalyzer::InvalidateAllNonAliasingInputs ( const Operation & op)
private

Definition at line 518 of file late-load-elimination-reducer.cc.

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

◆ InvalidateIfAlias()

void v8::internal::compiler::turboshaft::LateLoadEliminationAnalyzer::InvalidateIfAlias ( OpIndex op_idx)
private

Definition at line 526 of file late-load-elimination-reducer.cc.

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

◆ ProcessAllocate()

void v8::internal::compiler::turboshaft::LateLoadEliminationAnalyzer::ProcessAllocate ( OpIndex op_idx,
const AllocateOp & op )
private

Definition at line 553 of file late-load-elimination-reducer.cc.

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

◆ ProcessAssumeMap()

void v8::internal::compiler::turboshaft::LateLoadEliminationAnalyzer::ProcessAssumeMap ( OpIndex op_idx,
const AssumeMapOp & op )
private

Definition at line 559 of file late-load-elimination-reducer.cc.

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

◆ ProcessBlock()

void v8::internal::compiler::turboshaft::LateLoadEliminationAnalyzer::ProcessBlock ( const Block & block,
bool compute_start_snapshot )
private

Definition at line 163 of file late-load-elimination-reducer.cc.

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

◆ ProcessCall()

void v8::internal::compiler::turboshaft::LateLoadEliminationAnalyzer::ProcessCall ( OpIndex op_idx,
const CallOp & op )
private

Definition at line 425 of file late-load-elimination-reducer.cc.

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

◆ ProcessChange()

void v8::internal::compiler::turboshaft::LateLoadEliminationAnalyzer::ProcessChange ( OpIndex op_idx,
const ChangeOp & change )
private

Definition at line 593 of file late-load-elimination-reducer.cc.

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

◆ ProcessLoad()

void v8::internal::compiler::turboshaft::LateLoadEliminationAnalyzer::ProcessLoad ( OpIndex op_idx,
const LoadOp & op )
private

Definition at line 314 of file late-load-elimination-reducer.cc.

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

◆ ProcessStore()

void v8::internal::compiler::turboshaft::LateLoadEliminationAnalyzer::ProcessStore ( OpIndex op_idx,
const StoreOp & op )
private

Definition at line 377 of file late-load-elimination-reducer.cc.

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

◆ Run()

void v8::internal::compiler::turboshaft::LateLoadEliminationAnalyzer::Run ( )

Definition at line 35 of file late-load-elimination-reducer.cc.

Here is the call graph for this function:

◆ SealAndDiscard()

void v8::internal::compiler::turboshaft::LateLoadEliminationAnalyzer::SealAndDiscard ( )
private

Definition at line 614 of file late-load-elimination-reducer.cc.

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

◆ StoreLoopSnapshotInForwardPredecessor()

void v8::internal::compiler::turboshaft::LateLoadEliminationAnalyzer::StoreLoopSnapshotInForwardPredecessor ( const Block & loop_header)
private

Definition at line 620 of file late-load-elimination-reducer.cc.

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

Member Data Documentation

◆ block_to_snapshot_mapping_

FixedBlockSidetable<std::optional<Snapshot> > v8::internal::compiler::turboshaft::LateLoadEliminationAnalyzer::block_to_snapshot_mapping_
private

Definition at line 767 of file late-load-elimination-reducer.h.

◆ broker_

JSHeapBroker* v8::internal::compiler::turboshaft::LateLoadEliminationAnalyzer::broker_
private

Definition at line 738 of file late-load-elimination-reducer.h.

◆ data_

PipelineData* v8::internal::compiler::turboshaft::LateLoadEliminationAnalyzer::data_
private

Definition at line 735 of file late-load-elimination-reducer.h.

◆ graph_

Graph& v8::internal::compiler::turboshaft::LateLoadEliminationAnalyzer::graph_
private

Definition at line 736 of file late-load-elimination-reducer.h.

◆ int32_truncated_loads_

std::map<OpIndex, base::SmallMap<std::map<OpIndex, OpIndex>, 4> > v8::internal::compiler::turboshaft::LateLoadEliminationAnalyzer::int32_truncated_loads_
private

Definition at line 748 of file late-load-elimination-reducer.h.

◆ memory_

MemoryContentTable v8::internal::compiler::turboshaft::LateLoadEliminationAnalyzer::memory_
private

Definition at line 760 of file late-load-elimination-reducer.h.

◆ non_aliasing_objects_

AliasTable v8::internal::compiler::turboshaft::LateLoadEliminationAnalyzer::non_aliasing_objects_
private

Definition at line 758 of file late-load-elimination-reducer.h.

◆ object_maps_

MapTable v8::internal::compiler::turboshaft::LateLoadEliminationAnalyzer::object_maps_
private

Definition at line 759 of file late-load-elimination-reducer.h.

◆ phase_zone_

Zone* v8::internal::compiler::turboshaft::LateLoadEliminationAnalyzer::phase_zone_
private

Definition at line 737 of file late-load-elimination-reducer.h.

◆ predecessor_alias_snapshots_

ZoneVector<AliasSnapshot> v8::internal::compiler::turboshaft::LateLoadEliminationAnalyzer::predecessor_alias_snapshots_
private

Definition at line 772 of file late-load-elimination-reducer.h.

◆ predecessor_maps_snapshots_

ZoneVector<MapSnapshot> v8::internal::compiler::turboshaft::LateLoadEliminationAnalyzer::predecessor_maps_snapshots_
private

Definition at line 773 of file late-load-elimination-reducer.h.

◆ predecessor_memory_snapshots_

ZoneVector<MemorySnapshot> v8::internal::compiler::turboshaft::LateLoadEliminationAnalyzer::predecessor_memory_snapshots_
private

Definition at line 774 of file late-load-elimination-reducer.h.

◆ raw_base_assumption_

RawBaseAssumption v8::internal::compiler::turboshaft::LateLoadEliminationAnalyzer::raw_base_assumption_
private

Definition at line 739 of file late-load-elimination-reducer.h.

◆ replacements_

FixedOpIndexSidetable<Replacement> v8::internal::compiler::turboshaft::LateLoadEliminationAnalyzer::replacements_
private

Definition at line 745 of file late-load-elimination-reducer.h.


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