|
V8 Project
|
#include <scheduler.h>
Collaboration diagram for v8::internal::compiler::Scheduler: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().
Here is the call graph for this function:
Here is the caller graph for this function:
|
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().
Here is the call graph for this function:
Here is the caller graph for this function:
|
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().
Here is the call graph for this function:
Here is the caller graph for this function:
|
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().
Here is the call graph for this function:
Here is the caller graph for this function:
|
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().
Here is the call graph for this function:
Here is the caller graph for this function:
|
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().
Here is the call graph for this function:
Here is the caller graph for this function:
|
private |
Definition at line 308 of file scheduler.cc.
References DCHECK, and GetRPONumber().
Referenced by GenerateImmediateDominatorTree(), and v8::internal::compiler::ScheduleLateNodeVisitor::Pre().
Here is the call graph for this function:
Here is the caller graph for this function:
|
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().
Here is the caller graph for this function:
|
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().
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlineprivate |
Definition at line 68 of file scheduler.h.
References DCHECK, v8::internal::compiler::Schedule::rpo_order_, and schedule_.
Referenced by GenerateImmediateDominatorTree(), and GetCommonDominator().
Here is the caller graph for this function:
|
private |
Definition at line 470 of file scheduler.cc.
References graph_, v8::internal::compiler::Trace(), and v8::internal::compiler::Graph::VisitNodeInputsFromEnd().
Referenced by ComputeSchedule().
Here is the call graph for this function:
Here is the caller graph for this function:
|
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().
Here is the call graph for this function:
Here is the caller graph for this function:
|
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().
Here is the call graph for this function:
Here is the caller graph for this function:
|
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().