V8 Project
|
#include <scheduler.h>
Classes | |
struct | SchedulerData |
Static Public Member Functions | |
static Schedule * | ComputeSchedule (Graph *graph) |
static BasicBlockVector * | ComputeSpecialRPO (Schedule *schedule) |
static void | ComputeCFG (Graph *graph, Schedule *schedule) |
Private Types | |
enum | Placement { kUnknown , kSchedulable , kFixed } |
Private Member Functions | |
Scheduler (Zone *zone, Graph *graph, Schedule *schedule) | |
SchedulerData | DefaultSchedulerData () |
SchedulerData * | GetData (Node *node) |
void | BuildCFG () |
Placement | GetPlacement (Node *node) |
int | GetRPONumber (BasicBlock *block) |
void | GenerateImmediateDominatorTree () |
BasicBlock * | GetCommonDominator (BasicBlock *b1, BasicBlock *b2) |
void | ScheduleEarly () |
void | PrepareUses () |
void | ScheduleLate () |
bool | ConnectFloatingControl () |
void | ConnectFloatingControlSubgraph (BasicBlock *block, Node *node) |
Private Attributes | |
Zone * | zone_ |
Graph * | graph_ |
Schedule * | schedule_ |
NodeVectorVector | scheduled_nodes_ |
NodeVector | schedule_root_nodes_ |
ZoneVector< SchedulerData > | node_data_ |
bool | has_floating_control_ |
Friends | |
class | CFGBuilder |
class | ScheduleEarlyNodeVisitor |
class | PrepareUsesVisitor |
class | ScheduleLateNodeVisitor |
Definition at line 20 of file scheduler.h.
|
private |
|
private |
Definition at line 227 of file scheduler.cc.
|
private |
Definition at line 299 of file scheduler.cc.
References v8::internal::compiler::Schedule::BasicBlockCount(), v8::internal::compiler::CFGBuilder::Run(), schedule_, scheduled_nodes_, v8::internal::compiler::Trace(), and zone_.
Referenced by ComputeSchedule().
|
static |
Definition at line 237 of file scheduler.cc.
References BuildCFG(), ComputeSpecialRPO(), ConnectFloatingControl(), GenerateImmediateDominatorTree(), v8::internal::Zone::isolate(), v8::internal::compiler::GenericGraphBase::NodeCount(), PrepareUses(), ScheduleEarly(), ScheduleLate(), and v8::internal::compiler::GenericGraphBase::zone().
Referenced by v8::internal::compiler::Pipeline::ComputeSchedule().
|
static |
Definition at line 933 of file scheduler.cc.
References v8::internal::List< T, AllocationPolicy >::Add(), v8::internal::compiler::BlockList::Add(), v8::internal::compiler::LoopInfo::AddOutgoing(), v8::internal::List< T, AllocationPolicy >::at(), v8::internal::compiler::Schedule::BasicBlockCount(), v8::internal::compiler::SpecialRPOStackFrame::block, v8::internal::compiler::BlockList::block, CHECK_EQ, v8::internal::compiler::ComputeLoopInfo(), v8::internal::BitVector::Contains(), DCHECK, v8::internal::compiler::LoopInfo::end, v8::internal::compiler::LoopInfo::header, v8::internal::compiler::SpecialRPOStackFrame::index, v8::internal::Zone::isolate(), v8::internal::compiler::kBlockOnStack, v8::internal::compiler::kBlockUnvisited1, v8::internal::compiler::kBlockUnvisited2, v8::internal::compiler::kBlockVisited1, v8::internal::compiler::kBlockVisited2, v8::internal::compiler::LoopInfo::members, v8::internal::Zone::NewArray(), v8::internal::compiler::BlockList::next, NULL, v8::internal::compiler::LoopInfo::outgoing, v8::internal::compiler::LoopInfo::prev, v8::internal::compiler::Push(), v8::internal::compiler::Schedule::rpo_order_, v8::internal::compiler::BlockList::Serialize(), v8::internal::compiler::GenericGraph< V >::start(), v8::internal::compiler::LoopInfo::start, v8::internal::compiler::Trace(), and v8::internal::compiler::GenericGraphBase::zone().
Referenced by ComputeSchedule(), and v8::internal::compiler::RawMachineAssembler::Export().
|
private |
Definition at line 631 of file scheduler.cc.
References ConnectFloatingControlSubgraph(), GetData(), has_floating_control_, v8::internal::compiler::Scheduler::SchedulerData::is_connected_control_, v8::internal::compiler::Scheduler::SchedulerData::is_floating_control_, v8::internal::compiler::Schedule::rpo_order(), schedule_, and v8::internal::compiler::Trace().
Referenced by ComputeSchedule().
|
private |
Definition at line 663 of file scheduler.cc.
References DCHECK, DCHECK_EQ, DCHECK_NE, v8::internal::compiler::NodeProperties::FirstControlIndex(), GetData(), v8::internal::compiler::Scheduler::SchedulerData::is_connected_control_, v8::internal::compiler::Scheduler::SchedulerData::is_floating_control_, v8::internal::compiler::NodeProperties::IsControlEdge(), v8::internal::compiler::IrOpcode::IsControlOpcode(), NULL, v8::internal::compiler::NodeProperties::PastControlIndex(), v8::internal::compiler::Trace(), and zone_.
Referenced by ConnectFloatingControl().
|
private |
Definition at line 221 of file scheduler.cc.
References kUnknown.
|
private |
Definition at line 323 of file scheduler.cc.
References DCHECK, GetCommonDominator(), GetRPONumber(), v8::internal::compiler::Schedule::rpo_order_, schedule_, v8::internal::compiler::GenericGraph< V >::start(), and v8::internal::compiler::Trace().
Referenced by ComputeSchedule().
|
private |
Definition at line 308 of file scheduler.cc.
References DCHECK, and GetRPONumber().
Referenced by GenerateImmediateDominatorTree(), and v8::internal::compiler::ScheduleLateNodeVisitor::Pre().
|
inlineprivate |
Definition at line 59 of file scheduler.h.
References DCHECK, and node_data_.
Referenced by ConnectFloatingControl(), ConnectFloatingControlSubgraph(), v8::internal::compiler::CFGBuilder::FixNode(), GetPlacement(), v8::internal::compiler::ScheduleEarlyNodeVisitor::Post(), v8::internal::compiler::PrepareUsesVisitor::PostEdge(), v8::internal::compiler::ScheduleEarlyNodeVisitor::Pre(), v8::internal::compiler::ScheduleLateNodeVisitor::Pre(), v8::internal::compiler::CFGBuilder::Queue(), and v8::internal::compiler::ScheduleLateNodeVisitor::ScheduleNode().
|
private |
Definition at line 262 of file scheduler.cc.
References CONTROL_OP_LIST, DEFINE_FLOATING_CONTROL_CASE, v8::internal::compiler::NodeProperties::GetControlInput(), GetData(), has_floating_control_, v8::internal::compiler::Scheduler::SchedulerData::is_connected_control_, v8::internal::compiler::Scheduler::SchedulerData::is_floating_control_, kFixed, kSchedulable, kUnknown, v8::internal::compiler::Scheduler::SchedulerData::placement_, and v8::internal::compiler::Trace().
Referenced by v8::internal::compiler::ScheduleLateNodeVisitor::GetBlockForUse(), v8::internal::compiler::ScheduleEarlyNodeVisitor::Post(), v8::internal::compiler::PrepareUsesVisitor::PostEdge(), v8::internal::compiler::ScheduleEarlyNodeVisitor::Pre(), and v8::internal::compiler::PrepareUsesVisitor::Pre().
|
inlineprivate |
Definition at line 68 of file scheduler.h.
References DCHECK, v8::internal::compiler::Schedule::rpo_order_, and schedule_.
Referenced by GenerateImmediateDominatorTree(), and GetCommonDominator().
|
private |
Definition at line 470 of file scheduler.cc.
References graph_, v8::internal::compiler::Trace(), and v8::internal::compiler::Graph::VisitNodeInputsFromEnd().
Referenced by ComputeSchedule().
|
private |
Definition at line 410 of file scheduler.cc.
References graph_, v8::internal::compiler::ScheduleEarlyNodeVisitor::has_changed_rpo_constraints_, v8::internal::compiler::Trace(), and v8::internal::compiler::Graph::VisitNodeInputsFromEnd().
Referenced by ComputeSchedule().
|
private |
Definition at line 597 of file scheduler.cc.
References v8::internal::compiler::Schedule::AddNode(), v8::internal::compiler::Schedule::all_blocks_, graph_, v8::internal::Zone::isolate(), schedule_, schedule_root_nodes_, scheduled_nodes_, ScheduleLateNodeVisitor, v8::internal::compiler::Trace(), v8::internal::compiler::GenericGraphVisit::Visit(), and zone_.
Referenced by ComputeSchedule().
|
friend |
Definition at line 78 of file scheduler.h.
|
friend |
Definition at line 83 of file scheduler.h.
|
friend |
Definition at line 80 of file scheduler.h.
|
friend |
Definition at line 86 of file scheduler.h.
Referenced by ScheduleLate().
|
private |
Definition at line 48 of file scheduler.h.
Referenced by PrepareUses(), v8::internal::compiler::CFGBuilder::Run(), ScheduleEarly(), and ScheduleLate().
|
private |
Definition at line 53 of file scheduler.h.
Referenced by ConnectFloatingControl(), and GetPlacement().
|
private |
Definition at line 52 of file scheduler.h.
Referenced by GetData().
|
private |
Definition at line 49 of file scheduler.h.
Referenced by BuildCFG(), ConnectFloatingControl(), GenerateImmediateDominatorTree(), GetRPONumber(), and ScheduleLate().
|
private |
Definition at line 51 of file scheduler.h.
Referenced by v8::internal::compiler::CFGBuilder::ConnectBlocks(), v8::internal::compiler::PrepareUsesVisitor::Pre(), and ScheduleLate().
|
private |
Definition at line 50 of file scheduler.h.
Referenced by BuildCFG(), ScheduleLate(), and v8::internal::compiler::ScheduleLateNodeVisitor::ScheduleNode().
|
private |
Definition at line 47 of file scheduler.h.
Referenced by BuildCFG(), ConnectFloatingControlSubgraph(), and ScheduleLate().