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

#include <instruction-scheduler.h>

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

Classes

class  CriticalPathFirstQueue
 
class  ScheduleGraphNode
 
class  SchedulingQueueBase
 
class  StressSchedulerQueue
 

Public Member Functions

V8_EXPORT_PRIVATE InstructionScheduler (Zone *zone, InstructionSequence *sequence)
 
V8_EXPORT_PRIVATE void StartBlock (RpoNumber rpo)
 
V8_EXPORT_PRIVATE void EndBlock (RpoNumber rpo)
 
V8_EXPORT_PRIVATE void AddInstruction (Instruction *instr)
 
V8_EXPORT_PRIVATE void AddTerminator (Instruction *instr)
 
- 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 bool SchedulerSupported ()
 

Private Member Functions

template<typename QueueType >
void Schedule ()
 
V8_EXPORT_PRIVATE int GetInstructionFlags (const Instruction *instr) const
 
int GetTargetInstructionFlags (const Instruction *instr) const
 
bool IsBarrier (const Instruction *instr) const
 
bool HasSideEffect (const Instruction *instr) const
 
bool IsLoadOperation (const Instruction *instr) const
 
bool CanTrap (const Instruction *instr) const
 
bool MayNeedDeoptOrTrapCheck (const Instruction *instr) const
 
bool DependsOnDeoptOrTrap (const Instruction *instr) const
 
bool IsFixedRegisterParameter (const Instruction *instr) const
 
void ComputeTotalLatencies ()
 
Zonezone ()
 
InstructionSequencesequence ()
 
base::RandomNumberGeneratorrandom_number_generator ()
 

Static Private Member Functions

static int GetInstructionLatency (const Instruction *instr)
 

Private Attributes

Zonezone_
 
InstructionSequencesequence_
 
ZoneVector< ScheduleGraphNode * > graph_
 
ScheduleGraphNodelast_side_effect_instr_
 
ZoneVector< ScheduleGraphNode * > pending_loads_
 
ScheduleGraphNodelast_live_in_reg_marker_
 
ScheduleGraphNodelast_deopt_or_trap_
 
ZoneMap< int32_t, ScheduleGraphNode * > operands_map_
 
std::optional< base::RandomNumberGeneratorrandom_number_generator_
 

Friends

class InstructionSchedulerTester
 

Detailed Description

Definition at line 35 of file instruction-scheduler.h.

Constructor & Destructor Documentation

◆ InstructionScheduler()

v8::internal::compiler::InstructionScheduler::InstructionScheduler ( Zone * zone,
InstructionSequence * sequence )

Definition at line 77 of file instruction-scheduler.cc.

Member Function Documentation

◆ AddInstruction()

void v8::internal::compiler::InstructionScheduler::AddInstruction ( Instruction * instr)

Definition at line 122 of file instruction-scheduler.cc.

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

◆ AddTerminator()

void v8::internal::compiler::InstructionScheduler::AddTerminator ( Instruction * instr)

Definition at line 112 of file instruction-scheduler.cc.

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

◆ CanTrap()

bool v8::internal::compiler::InstructionScheduler::CanTrap ( const Instruction * instr) const
inlineprivate

Definition at line 173 of file instruction-scheduler.h.

Here is the caller graph for this function:

◆ ComputeTotalLatencies()

void v8::internal::compiler::InstructionScheduler::ComputeTotalLatencies ( )
private

Definition at line 410 of file instruction-scheduler.cc.

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

◆ DependsOnDeoptOrTrap()

bool v8::internal::compiler::InstructionScheduler::DependsOnDeoptOrTrap ( const Instruction * instr) const
inlineprivate

Definition at line 192 of file instruction-scheduler.h.

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

◆ EndBlock()

void v8::internal::compiler::InstructionScheduler::EndBlock ( RpoNumber rpo)

Definition at line 103 of file instruction-scheduler.cc.

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

◆ GetInstructionFlags()

int v8::internal::compiler::InstructionScheduler::GetInstructionFlags ( const Instruction * instr) const
private

Definition at line 258 of file instruction-scheduler.cc.

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

◆ GetInstructionLatency()

int v8::internal::compiler::InstructionScheduler::GetInstructionLatency ( const Instruction * instr)
staticprivate

Definition at line 387 of file instruction-scheduler-arm.cc.

◆ GetTargetInstructionFlags()

int v8::internal::compiler::InstructionScheduler::GetTargetInstructionFlags ( const Instruction * instr) const
private

Definition at line 13 of file instruction-scheduler-arm.cc.

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

◆ HasSideEffect()

bool v8::internal::compiler::InstructionScheduler::HasSideEffect ( const Instruction * instr) const
inlineprivate

Definition at line 164 of file instruction-scheduler.h.

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

◆ IsBarrier()

bool v8::internal::compiler::InstructionScheduler::IsBarrier ( const Instruction * instr) const
inlineprivate

Definition at line 158 of file instruction-scheduler.h.

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

◆ IsFixedRegisterParameter()

bool v8::internal::compiler::InstructionScheduler::IsFixedRegisterParameter ( const Instruction * instr) const
inlineprivate

Definition at line 199 of file instruction-scheduler.h.

Here is the caller graph for this function:

◆ IsLoadOperation()

bool v8::internal::compiler::InstructionScheduler::IsLoadOperation ( const Instruction * instr) const
inlineprivate

Definition at line 169 of file instruction-scheduler.h.

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

◆ MayNeedDeoptOrTrapCheck()

bool v8::internal::compiler::InstructionScheduler::MayNeedDeoptOrTrapCheck ( const Instruction * instr) const
inlineprivate

Definition at line 186 of file instruction-scheduler.h.

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

◆ random_number_generator()

base::RandomNumberGenerator * v8::internal::compiler::InstructionScheduler::random_number_generator ( )
inlineprivate

Definition at line 214 of file instruction-scheduler.h.

Here is the caller graph for this function:

◆ Schedule()

template<typename QueueType >
void v8::internal::compiler::InstructionScheduler::Schedule ( )
private

Definition at line 214 of file instruction-scheduler.cc.

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

◆ SchedulerSupported()

bool v8::internal::compiler::InstructionScheduler::SchedulerSupported ( )
static

Definition at line 11 of file instruction-scheduler-arm.cc.

Here is the caller graph for this function:

◆ sequence()

InstructionSequence * v8::internal::compiler::InstructionScheduler::sequence ( )
inlineprivate

Definition at line 213 of file instruction-scheduler.h.

Here is the caller graph for this function:

◆ StartBlock()

void v8::internal::compiler::InstructionScheduler::StartBlock ( RpoNumber rpo)

Definition at line 93 of file instruction-scheduler.cc.

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

◆ zone()

Zone * v8::internal::compiler::InstructionScheduler::zone ( )
inlineprivate

Definition at line 212 of file instruction-scheduler.h.

Here is the caller graph for this function:

Friends And Related Symbol Documentation

◆ InstructionSchedulerTester

friend class InstructionSchedulerTester
friend

Definition at line 222 of file instruction-scheduler.h.

Member Data Documentation

◆ graph_

ZoneVector<ScheduleGraphNode*> v8::internal::compiler::InstructionScheduler::graph_
private

Definition at line 220 of file instruction-scheduler.h.

◆ last_deopt_or_trap_

ScheduleGraphNode* v8::internal::compiler::InstructionScheduler::last_deopt_or_trap_
private

Definition at line 241 of file instruction-scheduler.h.

◆ last_live_in_reg_marker_

ScheduleGraphNode* v8::internal::compiler::InstructionScheduler::last_live_in_reg_marker_
private

Definition at line 237 of file instruction-scheduler.h.

◆ last_side_effect_instr_

ScheduleGraphNode* v8::internal::compiler::InstructionScheduler::last_side_effect_instr_
private

Definition at line 225 of file instruction-scheduler.h.

◆ operands_map_

ZoneMap<int32_t, ScheduleGraphNode*> v8::internal::compiler::InstructionScheduler::operands_map_
private

Definition at line 245 of file instruction-scheduler.h.

◆ pending_loads_

ZoneVector<ScheduleGraphNode*> v8::internal::compiler::InstructionScheduler::pending_loads_
private

Definition at line 230 of file instruction-scheduler.h.

◆ random_number_generator_

std::optional<base::RandomNumberGenerator> v8::internal::compiler::InstructionScheduler::random_number_generator_
private

Definition at line 247 of file instruction-scheduler.h.

◆ sequence_

InstructionSequence* v8::internal::compiler::InstructionScheduler::sequence_
private

Definition at line 219 of file instruction-scheduler.h.

◆ zone_

Zone* v8::internal::compiler::InstructionScheduler::zone_
private

Definition at line 218 of file instruction-scheduler.h.


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