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

#include <maglev-regalloc.h>

Collaboration diagram for v8::internal::maglev::RegisterFrameState< RegisterT >:

Public Types

using RegTList = RegListBase<RegisterT>
 

Public Member Functions

RegTList empty () const
 
RegTList free () const
 
RegTList unblocked_free () const
 
RegTList used () const
 
bool UnblockedFreeIsEmpty () const
 
template<typename Function >
void ForEachUsedRegister (Function &&f) const
 
void RemoveFromFree (RegisterT reg)
 
void AddToFree (RegisterT reg)
 
void AddToFree (RegTList list)
 
void FreeRegistersUsedBy (ValueNode *node)
 
void SetValue (RegisterT reg, ValueNode *node)
 
void SetValueWithoutBlocking (RegisterT reg, ValueNode *node)
 
ValueNodeGetValue (RegisterT reg) const
 
RegTList blocked () const
 
void block (RegisterT reg)
 
void unblock (RegisterT reg)
 
bool is_blocked (RegisterT reg)
 
void clear_blocked ()
 
compiler::InstructionOperand TryChooseInputRegister (ValueNode *node, const compiler::InstructionOperand &hint=compiler::InstructionOperand())
 
compiler::InstructionOperand TryChooseUnblockedInputRegister (ValueNode *node)
 
compiler::AllocatedOperand AllocateRegister (ValueNode *node, const compiler::InstructionOperand &hint=compiler::InstructionOperand())
 

Static Public Attributes

static constexpr bool kIsGeneralRegister
 
static constexpr bool kIsDoubleRegister
 
static constexpr RegTList kAllocatableRegisters
 
static constexpr RegTList kEmptyRegList = {}
 

Private Attributes

ValueNodevalues_ [RegisterT::kNumRegisters]
 
RegTList free_ = kAllocatableRegisters
 
RegTList blocked_ = kEmptyRegList
 

Detailed Description

template<typename RegisterT>
class v8::internal::maglev::RegisterFrameState< RegisterT >

Definition at line 57 of file maglev-regalloc.h.

Member Typedef Documentation

◆ RegTList

template<typename RegisterT >
using v8::internal::maglev::RegisterFrameState< RegisterT >::RegTList = RegListBase<RegisterT>

Definition at line 68 of file maglev-regalloc.h.

Member Function Documentation

◆ AddToFree() [1/2]

template<typename RegisterT >
void v8::internal::maglev::RegisterFrameState< RegisterT >::AddToFree ( RegisterT reg)
inline

Definition at line 93 of file maglev-regalloc.h.

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

◆ AddToFree() [2/2]

template<typename RegisterT >
void v8::internal::maglev::RegisterFrameState< RegisterT >::AddToFree ( RegTList list)
inline

Definition at line 94 of file maglev-regalloc.h.

◆ AllocateRegister()

template<typename RegisterT >
compiler::AllocatedOperand v8::internal::maglev::RegisterFrameState< RegisterT >::AllocateRegister ( ValueNode * node,
const compiler::InstructionOperand & hint = compiler::InstructionOperand() )

Definition at line 1928 of file maglev-regalloc.cc.

◆ block()

template<typename RegisterT >
void v8::internal::maglev::RegisterFrameState< RegisterT >::block ( RegisterT reg)
inline

Definition at line 135 of file maglev-regalloc.h.

Here is the call graph for this function:

◆ blocked()

template<typename RegisterT >
RegTList v8::internal::maglev::RegisterFrameState< RegisterT >::blocked ( ) const
inline

Definition at line 134 of file maglev-regalloc.h.

◆ clear_blocked()

template<typename RegisterT >
void v8::internal::maglev::RegisterFrameState< RegisterT >::clear_blocked ( )
inline

Definition at line 138 of file maglev-regalloc.h.

◆ empty()

template<typename RegisterT >
RegTList v8::internal::maglev::RegisterFrameState< RegisterT >::empty ( ) const
inline

Definition at line 74 of file maglev-regalloc.h.

◆ ForEachUsedRegister()

template<typename RegisterT >
template<typename Function >
void v8::internal::maglev::RegisterFrameState< RegisterT >::ForEachUsedRegister ( Function && f) const
inline

Definition at line 86 of file maglev-regalloc.h.

Here is the call graph for this function:

◆ free()

template<typename RegisterT >
RegTList v8::internal::maglev::RegisterFrameState< RegisterT >::free ( ) const
inline

Definition at line 75 of file maglev-regalloc.h.

Here is the caller graph for this function:

◆ FreeRegistersUsedBy()

template<typename RegisterT >
void v8::internal::maglev::RegisterFrameState< RegisterT >::FreeRegistersUsedBy ( ValueNode * node)
inline

Definition at line 96 of file maglev-regalloc.h.

◆ GetValue()

template<typename RegisterT >
ValueNode * v8::internal::maglev::RegisterFrameState< RegisterT >::GetValue ( RegisterT reg) const
inline

Definition at line 115 of file maglev-regalloc.h.

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

◆ is_blocked()

template<typename RegisterT >
bool v8::internal::maglev::RegisterFrameState< RegisterT >::is_blocked ( RegisterT reg)
inline

Definition at line 137 of file maglev-regalloc.h.

Here is the call graph for this function:

◆ RemoveFromFree()

template<typename RegisterT >
void v8::internal::maglev::RegisterFrameState< RegisterT >::RemoveFromFree ( RegisterT reg)
inline

Definition at line 92 of file maglev-regalloc.h.

Here is the call graph for this function:

◆ SetValue()

template<typename RegisterT >
void v8::internal::maglev::RegisterFrameState< RegisterT >::SetValue ( RegisterT reg,
ValueNode * node )
inline

Definition at line 102 of file maglev-regalloc.h.

Here is the call graph for this function:

◆ SetValueWithoutBlocking()

template<typename RegisterT >
void v8::internal::maglev::RegisterFrameState< RegisterT >::SetValueWithoutBlocking ( RegisterT reg,
ValueNode * node )
inline

Definition at line 109 of file maglev-regalloc.h.

Here is the call graph for this function:

◆ TryChooseInputRegister()

template<typename RegisterT >
compiler::InstructionOperand v8::internal::maglev::RegisterFrameState< RegisterT >::TryChooseInputRegister ( ValueNode * node,
const compiler::InstructionOperand & hint = compiler::InstructionOperand() )

Definition at line 1896 of file maglev-regalloc.cc.

Here is the call graph for this function:

◆ TryChooseUnblockedInputRegister()

template<typename RegisterT >
compiler::InstructionOperand v8::internal::maglev::RegisterFrameState< RegisterT >::TryChooseUnblockedInputRegister ( ValueNode * node)

Definition at line 1918 of file maglev-regalloc.cc.

Here is the call graph for this function:

◆ unblock()

template<typename RegisterT >
void v8::internal::maglev::RegisterFrameState< RegisterT >::unblock ( RegisterT reg)
inline

Definition at line 136 of file maglev-regalloc.h.

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

◆ unblocked_free()

template<typename RegisterT >
RegTList v8::internal::maglev::RegisterFrameState< RegisterT >::unblocked_free ( ) const
inline

Definition at line 76 of file maglev-regalloc.h.

Here is the caller graph for this function:

◆ UnblockedFreeIsEmpty()

template<typename RegisterT >
bool v8::internal::maglev::RegisterFrameState< RegisterT >::UnblockedFreeIsEmpty ( ) const
inline

Definition at line 83 of file maglev-regalloc.h.

Here is the call graph for this function:

◆ used()

template<typename RegisterT >
RegTList v8::internal::maglev::RegisterFrameState< RegisterT >::used ( ) const
inline

Definition at line 77 of file maglev-regalloc.h.

Here is the caller graph for this function:

Member Data Documentation

◆ blocked_

template<typename RegisterT >
RegTList v8::internal::maglev::RegisterFrameState< RegisterT >::blocked_ = kEmptyRegList
private

Definition at line 151 of file maglev-regalloc.h.

◆ free_

template<typename RegisterT >
RegTList v8::internal::maglev::RegisterFrameState< RegisterT >::free_ = kAllocatableRegisters
private

Definition at line 150 of file maglev-regalloc.h.

◆ kAllocatableRegisters

template<typename RegisterT >
RegTList v8::internal::maglev::RegisterFrameState< RegisterT >::kAllocatableRegisters
staticconstexpr
Initial value:
=
AllocatableRegisters<RegisterT>::kRegisters

Definition at line 70 of file maglev-regalloc.h.

◆ kEmptyRegList

template<typename RegisterT >
RegTList v8::internal::maglev::RegisterFrameState< RegisterT >::kEmptyRegList = {}
staticconstexpr

Definition at line 72 of file maglev-regalloc.h.

◆ kIsDoubleRegister

template<typename RegisterT >
bool v8::internal::maglev::RegisterFrameState< RegisterT >::kIsDoubleRegister
staticconstexpr
Initial value:
=
std::is_same<DoubleRegister, RegisterT>()

Definition at line 61 of file maglev-regalloc.h.

◆ kIsGeneralRegister

template<typename RegisterT >
bool v8::internal::maglev::RegisterFrameState< RegisterT >::kIsGeneralRegister
staticconstexpr
Initial value:
=
std::is_same<Register, RegisterT>()

Definition at line 59 of file maglev-regalloc.h.

◆ values_

template<typename RegisterT >
ValueNode* v8::internal::maglev::RegisterFrameState< RegisterT >::values_[RegisterT::kNumRegisters]
private

Definition at line 149 of file maglev-regalloc.h.


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