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

#include <maglev-ir.h>

Inheritance diagram for v8::internal::maglev::Phi:
Collaboration diagram for v8::internal::maglev::Phi:

Public Types

using List = base::ThreadedList<Phi>
 
using Key = compiler::turboshaft::SnapshotTable<ValueNode*>::Key
 

Public Member Functions

 Phi (uint64_t bitfield, MergePointInterpreterFrameState *merge_state, interpreter::Register owner)
 
Inputbackedge_input ()
 
interpreter::Register owner () const
 
const MergePointInterpreterFrameStatemerge_state () const
 
bool is_exception_phi () const
 
bool is_loop_phi () const
 
bool is_backedge_offset (int i) const
 
void VerifyInputs (MaglevGraphLabeller *graph_labeller) const
 
void SetValueLocationConstraints ()
 
void GenerateCode (MaglevAssembler *, const ProcessingState &)
 
void PrintParams (std::ostream &, MaglevGraphLabeller *) const
 
BasicBlockpredecessor_at (int i)
 
void RecordUseReprHint (UseRepresentation repr)
 
void RecordUseReprHint (UseRepresentationSet repr_mask)
 
UseRepresentationSet get_uses_repr_hints ()
 
UseRepresentationSet get_same_loop_uses_repr_hints ()
 
void merge_post_loop_type (NodeType type)
 
void set_post_loop_type (NodeType type)
 
void promote_post_loop_type ()
 
void merge_type (NodeType type)
 
void set_type (NodeType type)
 
NodeType type () const
 
Key key () const
 
void set_key (Key key)
 
bool has_key () const
 
void SetUseRequires31BitValue ()
 
bool uses_require_31_bit_value () const
 
void set_uses_require_31_bit_value ()
 
bool is_unmerged_loop_phi () const
 
- Public Member Functions inherited from v8::internal::maglev::NodeTMixin< Base, Derived >
constexpr Opcode opcode () const
 
constexpr const OpPropertiesproperties () const
 

Private Types

using Base = ValueNodeT<Phi>
 
using HasKeyFlag = NextBitField<bool, 1>
 
using Requires31BitValueFlag = HasKeyFlag::Next<bool, 1>
 
using LoopPhiAfterLoopFlag = Requires31BitValueFlag::Next<bool, 1>
 

Private Member Functions

Phi ** next ()
 

Private Attributes

const interpreter::Register owner_
 
UseRepresentationSet uses_repr_hint_ = {}
 
UseRepresentationSet same_loop_uses_repr_hint_ = {}
 
Phinext_ = nullptr
 
MergePointInterpreterFrameState *const merge_state_
 
union { 
 
   struct { 
 
      NodeType   type_ 
 
      NodeType   post_loop_type_ 
 
   }  
 
   Key   key_ 
 
};  
 

Additional Inherited Members

- Static Public Member Functions inherited from v8::internal::maglev::NodeTMixin< Base, Derived >
template<typename... Args>
static Derived * New (Zone *zone, std::initializer_list< ValueNode * > inputs, Args &&... args)
 
template<typename... Args>
static Derived * New (Zone *zone, size_t input_count, Args &&... args)
 
- Protected Member Functions inherited from v8::internal::maglev::NodeTMixin< Base, Derived >
template<typename... Args>
 NodeTMixin (uint64_t bitfield, Args &&... args)
 

Detailed Description

Definition at line 9407 of file maglev-ir.h.

Member Typedef Documentation

◆ Base

Definition at line 9408 of file maglev-ir.h.

◆ HasKeyFlag

using v8::internal::maglev::Phi::HasKeyFlag = NextBitField<bool, 1>
private

Definition at line 9527 of file maglev-ir.h.

◆ Key

◆ List

◆ LoopPhiAfterLoopFlag

using v8::internal::maglev::Phi::LoopPhiAfterLoopFlag = Requires31BitValueFlag::Next<bool, 1>
private

Definition at line 9529 of file maglev-ir.h.

◆ Requires31BitValueFlag

using v8::internal::maglev::Phi::Requires31BitValueFlag = HasKeyFlag::Next<bool, 1>
private

Definition at line 9528 of file maglev-ir.h.

Constructor & Destructor Documentation

◆ Phi()

v8::internal::maglev::Phi::Phi ( uint64_t bitfield,
MergePointInterpreterFrameState * merge_state,
interpreter::Register owner )
inline

Definition at line 9414 of file maglev-ir.h.

Here is the call graph for this function:

Member Function Documentation

◆ backedge_input()

Input & v8::internal::maglev::Phi::backedge_input ( )
inline

Definition at line 9424 of file maglev-ir.h.

◆ GenerateCode()

void v8::internal::maglev::Phi::GenerateCode ( MaglevAssembler * ,
const ProcessingState &  )

◆ get_same_loop_uses_repr_hints()

UseRepresentationSet v8::internal::maglev::Phi::get_same_loop_uses_repr_hints ( )
inline

Definition at line 9465 of file maglev-ir.h.

◆ get_uses_repr_hints()

UseRepresentationSet v8::internal::maglev::Phi::get_uses_repr_hints ( )
inline

Definition at line 9464 of file maglev-ir.h.

◆ has_key()

bool v8::internal::maglev::Phi::has_key ( ) const
inline

Definition at line 9509 of file maglev-ir.h.

Here is the caller graph for this function:

◆ is_backedge_offset()

bool v8::internal::maglev::Phi::is_backedge_offset ( int i) const
inline

Definition at line 9438 of file maglev-ir.h.

Here is the call graph for this function:

◆ is_exception_phi()

bool v8::internal::maglev::Phi::is_exception_phi ( ) const
inline

Definition at line 9435 of file maglev-ir.h.

◆ is_loop_phi()

bool v8::internal::maglev::Phi::is_loop_phi ( ) const

Definition at line 126 of file maglev-ir.cc.

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

◆ is_unmerged_loop_phi()

bool v8::internal::maglev::Phi::is_unmerged_loop_phi ( ) const

Definition at line 128 of file maglev-ir.cc.

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

◆ key()

Key v8::internal::maglev::Phi::key ( ) const
inline

Definition at line 9499 of file maglev-ir.h.

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

◆ merge_post_loop_type()

void v8::internal::maglev::Phi::merge_post_loop_type ( NodeType type)
inline

Definition at line 9469 of file maglev-ir.h.

Here is the call graph for this function:

◆ merge_state()

const MergePointInterpreterFrameState * v8::internal::maglev::Phi::merge_state ( ) const
inline

Definition at line 9427 of file maglev-ir.h.

Here is the caller graph for this function:

◆ merge_type()

void v8::internal::maglev::Phi::merge_type ( NodeType type)
inline

Definition at line 9485 of file maglev-ir.h.

Here is the call graph for this function:

◆ next()

Phi ** v8::internal::maglev::Phi::next ( )
inlineprivate

Definition at line 9525 of file maglev-ir.h.

◆ owner()

interpreter::Register v8::internal::maglev::Phi::owner ( ) const
inline

Definition at line 9426 of file maglev-ir.h.

◆ predecessor_at()

BasicBlock * v8::internal::maglev::Phi::predecessor_at ( int i)

Definition at line 59 of file maglev-ir.cc.

Here is the call graph for this function:

◆ PrintParams()

void v8::internal::maglev::Phi::PrintParams ( std::ostream & os,
MaglevGraphLabeller * graph_labeller ) const

Definition at line 7923 of file maglev-ir.cc.

◆ promote_post_loop_type()

void v8::internal::maglev::Phi::promote_post_loop_type ( )
inline

Definition at line 9478 of file maglev-ir.h.

Here is the call graph for this function:

◆ RecordUseReprHint() [1/2]

void v8::internal::maglev::Phi::RecordUseReprHint ( UseRepresentation repr)
inline

Definition at line 9458 of file maglev-ir.h.

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

◆ RecordUseReprHint() [2/2]

void v8::internal::maglev::Phi::RecordUseReprHint ( UseRepresentationSet repr_mask)

Definition at line 133 of file maglev-ir.cc.

Here is the call graph for this function:

◆ set_key()

void v8::internal::maglev::Phi::set_key ( Key key)
inline

Definition at line 9503 of file maglev-ir.h.

Here is the call graph for this function:

◆ set_post_loop_type()

void v8::internal::maglev::Phi::set_post_loop_type ( NodeType type)
inline

Definition at line 9473 of file maglev-ir.h.

Here is the call graph for this function:

◆ set_type()

void v8::internal::maglev::Phi::set_type ( NodeType type)
inline

Definition at line 9489 of file maglev-ir.h.

Here is the call graph for this function:

◆ set_uses_require_31_bit_value()

void v8::internal::maglev::Phi::set_uses_require_31_bit_value ( )
inline

Definition at line 9517 of file maglev-ir.h.

Here is the caller graph for this function:

◆ SetUseRequires31BitValue()

void v8::internal::maglev::Phi::SetUseRequires31BitValue ( )

Definition at line 153 of file maglev-ir.cc.

Here is the call graph for this function:

◆ SetValueLocationConstraints()

void v8::internal::maglev::Phi::SetValueLocationConstraints ( )

◆ type()

NodeType v8::internal::maglev::Phi::type ( ) const
inline

Definition at line 9493 of file maglev-ir.h.

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

◆ uses_require_31_bit_value()

bool v8::internal::maglev::Phi::uses_require_31_bit_value ( ) const
inline

Definition at line 9514 of file maglev-ir.h.

Here is the caller graph for this function:

◆ VerifyInputs()

void v8::internal::maglev::Phi::VerifyInputs ( MaglevGraphLabeller * graph_labeller) const

Definition at line 576 of file maglev-ir.cc.

Here is the call graph for this function:

Member Data Documentation

◆ [union]

◆ key_

Key v8::internal::maglev::Phi::key_

Definition at line 9555 of file maglev-ir.h.

◆ merge_state_

MergePointInterpreterFrameState* const v8::internal::maglev::Phi::merge_state_
private

Definition at line 9537 of file maglev-ir.h.

◆ next_

Phi* v8::internal::maglev::Phi::next_ = nullptr
private

Definition at line 9536 of file maglev-ir.h.

◆ owner_

const interpreter::Register v8::internal::maglev::Phi::owner_
private

Definition at line 9531 of file maglev-ir.h.

◆ post_loop_type_

NodeType v8::internal::maglev::Phi::post_loop_type_

Definition at line 9550 of file maglev-ir.h.

◆ same_loop_uses_repr_hint_

UseRepresentationSet v8::internal::maglev::Phi::same_loop_uses_repr_hint_ = {}
private

Definition at line 9534 of file maglev-ir.h.

◆ type_

NodeType v8::internal::maglev::Phi::type_

Definition at line 9542 of file maglev-ir.h.

◆ uses_repr_hint_

UseRepresentationSet v8::internal::maglev::Phi::uses_repr_hint_ = {}
private

Definition at line 9533 of file maglev-ir.h.


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