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

#include <register-allocator.h>

Inheritance diagram for v8::internal::compiler::LiveRangeBuilder:
Collaboration diagram for v8::internal::compiler::LiveRangeBuilder:

Public Member Functions

 LiveRangeBuilder (RegisterAllocationData *data, Zone *local_zone)
 
 LiveRangeBuilder (const LiveRangeBuilder &)=delete
 
LiveRangeBuilderoperator= (const LiveRangeBuilder &)=delete
 
void BuildLiveRanges ()
 
- Public Member Functions inherited from v8::internal::ZoneObject
void * operator new (size_t, Zone *)=delete
 
void * operator new (size_t size, void *ptr)
 
void operator delete (void *, size_t)
 
void operator delete (void *pointer, Zone *zone)=delete
 

Static Public Member Functions

static SparseBitVectorComputeLiveOut (const InstructionBlock *block, RegisterAllocationData *data)
 

Private Types

using SpillMode = RegisterAllocationData::SpillMode
 

Private Member Functions

RegisterAllocationDatadata () const
 
InstructionSequencecode () const
 
Zoneallocation_zone () const
 
Zonecode_zone () const
 
const RegisterConfigurationconfig () const
 
ZoneVector< SparseBitVector * > & live_in_sets () const
 
void AddInitialIntervals (const InstructionBlock *block, SparseBitVector *live_out)
 
void ProcessInstructions (const InstructionBlock *block, SparseBitVector *live)
 
void ProcessPhis (const InstructionBlock *block, SparseBitVector *live)
 
void ProcessLoopHeader (const InstructionBlock *block, SparseBitVector *live)
 
int FixedFPLiveRangeID (int index, MachineRepresentation rep)
 
TopLevelLiveRangeFixedLiveRangeFor (int index, SpillMode spill_mode)
 
TopLevelLiveRangeFixedFPLiveRangeFor (int index, MachineRepresentation rep, SpillMode spill_mode)
 
TopLevelLiveRangeFixedSIMD128LiveRangeFor (int index, SpillMode spill_mode)
 
void MapPhiHint (InstructionOperand *operand, UsePosition *use_pos)
 
void ResolvePhiHint (InstructionOperand *operand, UsePosition *use_pos)
 
UsePositionNewUsePosition (LifetimePosition pos, InstructionOperand *operand, void *hint, UsePositionHintType hint_type)
 
UsePositionNewUsePosition (LifetimePosition pos)
 
TopLevelLiveRangeLiveRangeFor (InstructionOperand *operand, SpillMode spill_mode)
 
UsePositionDefine (LifetimePosition position, InstructionOperand *operand, void *hint, UsePositionHintType hint_type, SpillMode spill_mode)
 
void Define (LifetimePosition position, InstructionOperand *operand, SpillMode spill_mode)
 
UsePositionUse (LifetimePosition block_start, LifetimePosition position, InstructionOperand *operand, void *hint, UsePositionHintType hint_type, SpillMode spill_mode)
 
void Use (LifetimePosition block_start, LifetimePosition position, InstructionOperand *operand, SpillMode spill_mode)
 
SpillMode SpillModeForBlock (const InstructionBlock *block) const
 

Static Private Member Functions

static int FixedLiveRangeID (int index)
 

Private Attributes

RegisterAllocationData *const data_
 
ZoneMap< InstructionOperand *, UsePosition * > phi_hints_
 

Static Private Attributes

static constexpr int kNumberOfFixedRangesPerRegister
 

Detailed Description

Definition at line 1366 of file register-allocator.h.

Member Typedef Documentation

◆ SpillMode

Constructor & Destructor Documentation

◆ LiveRangeBuilder() [1/2]

v8::internal::compiler::LiveRangeBuilder::LiveRangeBuilder ( RegisterAllocationData * data,
Zone * local_zone )
explicit

Definition at line 1783 of file register-allocator.cc.

◆ LiveRangeBuilder() [2/2]

v8::internal::compiler::LiveRangeBuilder::LiveRangeBuilder ( const LiveRangeBuilder & )
delete

Member Function Documentation

◆ AddInitialIntervals()

void v8::internal::compiler::LiveRangeBuilder::AddInitialIntervals ( const InstructionBlock * block,
SparseBitVector * live_out )
private

Definition at line 1820 of file register-allocator.cc.

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

◆ allocation_zone()

Zone * v8::internal::compiler::LiveRangeBuilder::allocation_zone ( ) const
inlineprivate

Definition at line 1384 of file register-allocator.h.

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

◆ BuildLiveRanges()

void v8::internal::compiler::LiveRangeBuilder::BuildLiveRanges ( )

Definition at line 2393 of file register-allocator.cc.

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

◆ code()

InstructionSequence * v8::internal::compiler::LiveRangeBuilder::code ( ) const
inlineprivate

Definition at line 1383 of file register-allocator.h.

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

◆ code_zone()

Zone * v8::internal::compiler::LiveRangeBuilder::code_zone ( ) const
inlineprivate

Definition at line 1385 of file register-allocator.h.

Here is the call graph for this function:

◆ ComputeLiveOut()

SparseBitVector * v8::internal::compiler::LiveRangeBuilder::ComputeLiveOut ( const InstructionBlock * block,
RegisterAllocationData * data )
static

Definition at line 1787 of file register-allocator.cc.

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

◆ config()

const RegisterConfiguration * v8::internal::compiler::LiveRangeBuilder::config ( ) const
inlineprivate

Definition at line 1386 of file register-allocator.h.

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

◆ data()

RegisterAllocationData * v8::internal::compiler::LiveRangeBuilder::data ( ) const
inlineprivate

Definition at line 1382 of file register-allocator.h.

Here is the caller graph for this function:

◆ Define() [1/2]

void v8::internal::compiler::LiveRangeBuilder::Define ( LifetimePosition position,
InstructionOperand * operand,
SpillMode spill_mode )
inlineprivate

Definition at line 1430 of file register-allocator.h.

Here is the call graph for this function:

◆ Define() [2/2]

UsePosition * v8::internal::compiler::LiveRangeBuilder::Define ( LifetimePosition position,
InstructionOperand * operand,
void * hint,
UsePositionHintType hint_type,
SpillMode spill_mode )
private

Definition at line 1977 of file register-allocator.cc.

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

◆ FixedFPLiveRangeFor()

TopLevelLiveRange * v8::internal::compiler::LiveRangeBuilder::FixedFPLiveRangeFor ( int index,
MachineRepresentation rep,
SpillMode spill_mode )
private

Definition at line 1881 of file register-allocator.cc.

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

◆ FixedFPLiveRangeID()

int v8::internal::compiler::LiveRangeBuilder::FixedFPLiveRangeID ( int index,
MachineRepresentation rep )
private

Definition at line 1835 of file register-allocator.cc.

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

◆ FixedLiveRangeFor()

TopLevelLiveRange * v8::internal::compiler::LiveRangeBuilder::FixedLiveRangeFor ( int index,
SpillMode spill_mode )
private

Definition at line 1860 of file register-allocator.cc.

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

◆ FixedLiveRangeID()

static int v8::internal::compiler::LiveRangeBuilder::FixedLiveRangeID ( int index)
inlinestaticprivate

Definition at line 1409 of file register-allocator.h.

Here is the caller graph for this function:

◆ FixedSIMD128LiveRangeFor()

TopLevelLiveRange * v8::internal::compiler::LiveRangeBuilder::FixedSIMD128LiveRangeFor ( int index,
SpillMode spill_mode )
private

Definition at line 1920 of file register-allocator.cc.

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

◆ live_in_sets()

ZoneVector< SparseBitVector * > & v8::internal::compiler::LiveRangeBuilder::live_in_sets ( ) const
inlineprivate

Definition at line 1387 of file register-allocator.h.

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

◆ LiveRangeFor()

TopLevelLiveRange * v8::internal::compiler::LiveRangeBuilder::LiveRangeFor ( InstructionOperand * operand,
SpillMode spill_mode )
private

Definition at line 1946 of file register-allocator.cc.

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

◆ MapPhiHint()

void v8::internal::compiler::LiveRangeBuilder::MapPhiHint ( InstructionOperand * operand,
UsePosition * use_pos )
private

Definition at line 2464 of file register-allocator.cc.

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

◆ NewUsePosition() [1/2]

UsePosition * v8::internal::compiler::LiveRangeBuilder::NewUsePosition ( LifetimePosition pos)
inlineprivate

Definition at line 1421 of file register-allocator.h.

Here is the call graph for this function:

◆ NewUsePosition() [2/2]

UsePosition * v8::internal::compiler::LiveRangeBuilder::NewUsePosition ( LifetimePosition pos,
InstructionOperand * operand,
void * hint,
UsePositionHintType hint_type )
private

Definition at line 1970 of file register-allocator.cc.

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

◆ operator=()

LiveRangeBuilder & v8::internal::compiler::LiveRangeBuilder::operator= ( const LiveRangeBuilder & )
delete

◆ ProcessInstructions()

void v8::internal::compiler::LiveRangeBuilder::ProcessInstructions ( const InstructionBlock * block,
SparseBitVector * live )
private

Definition at line 2017 of file register-allocator.cc.

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

◆ ProcessLoopHeader()

void v8::internal::compiler::LiveRangeBuilder::ProcessLoopHeader ( const InstructionBlock * block,
SparseBitVector * live )
private

Definition at line 2372 of file register-allocator.cc.

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

◆ ProcessPhis()

void v8::internal::compiler::LiveRangeBuilder::ProcessPhis ( const InstructionBlock * block,
SparseBitVector * live )
private

Definition at line 2250 of file register-allocator.cc.

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

◆ ResolvePhiHint()

void v8::internal::compiler::LiveRangeBuilder::ResolvePhiHint ( InstructionOperand * operand,
UsePosition * use_pos )
private

Definition at line 2472 of file register-allocator.cc.

Here is the caller graph for this function:

◆ SpillModeForBlock()

SpillMode v8::internal::compiler::LiveRangeBuilder::SpillModeForBlock ( const InstructionBlock * block) const
inlineprivate

Definition at line 1442 of file register-allocator.h.

Here is the caller graph for this function:

◆ Use() [1/2]

void v8::internal::compiler::LiveRangeBuilder::Use ( LifetimePosition block_start,
LifetimePosition position,
InstructionOperand * operand,
SpillMode spill_mode )
inlineprivate

Definition at line 1437 of file register-allocator.h.

Here is the call graph for this function:

◆ Use() [2/2]

UsePosition * v8::internal::compiler::LiveRangeBuilder::Use ( LifetimePosition block_start,
LifetimePosition position,
InstructionOperand * operand,
void * hint,
UsePositionHintType hint_type,
SpillMode spill_mode )
private

Definition at line 2000 of file register-allocator.cc.

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

Member Data Documentation

◆ data_

RegisterAllocationData* const v8::internal::compiler::LiveRangeBuilder::data_
private

Definition at line 1446 of file register-allocator.h.

◆ kNumberOfFixedRangesPerRegister

int v8::internal::compiler::LiveRangeBuilder::kNumberOfFixedRangesPerRegister
staticconstexprprivate

◆ phi_hints_

ZoneMap<InstructionOperand*, UsePosition*> v8::internal::compiler::LiveRangeBuilder::phi_hints_
private

Definition at line 1447 of file register-allocator.h.


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