#include <OpCodeSteerer.h>
Onikiri::OpCodeDispatchSteererに対する継承グラフ
Public メソッド | |
void | Initialize (InitPhase phase) |
OpCodeDispatchSteerer () | |
virtual Scheduler * | Steer (OpIterator opIterator) |
virtual | ~OpCodeDispatchSteerer () |
OpCodeSteerer.h の 45 行で定義されています。
OpCodeDispatchSteerer::OpCodeDispatchSteerer | ( | ) |
OpCodeDispatchSteerer::~OpCodeDispatchSteerer | ( | ) | [virtual] |
OpCodeSteerer.cpp の 48 行で定義されています。
参照先 Onikiri::PhysicalResourceNode::ReleaseParam().
00049 { 00050 ReleaseParam(); 00051 }
関数の呼び出しグラフ:
void OpCodeDispatchSteerer::Initialize | ( | InitPhase | phase | ) |
OpCodeSteerer.cpp の 53 行で定義されています。
参照先 ASSERT・Onikiri::PhysicalResourceNode::CheckNodeInitialized()・code・Onikiri::Scheduler::GetExecUnitList()・Onikiri::Core::GetNumScheduler()・Onikiri::Core::GetScheduler()・Onikiri::PhysicalResourceNode::INIT_POST_CONNECTION・Onikiri::PhysicalResourceNode::INIT_PRE_CONNECTION・Onikiri::ParamExchange::LoadParam().
00054 { 00055 if (phase == INIT_PRE_CONNECTION){ 00056 LoadParam(); 00057 return; 00058 } 00059 if (phase == INIT_POST_CONNECTION){ 00060 00061 CheckNodeInitialized( "core", m_core ); 00062 00063 for(int i = 0; i < m_core->GetNumScheduler(); ++i) { 00064 Scheduler* sched = m_core->GetScheduler(i); 00065 const vector<ExecUnitIF*>& unitList = 00066 sched->GetExecUnitList(); 00067 00068 for( size_t i = 0; i < unitList.size(); i++){ 00069 int codeCount = unitList[i]->GetMappedCodeCount(); 00070 for(int j = 0; j < codeCount; j++){ 00071 int code = unitList[i]->GetMappedCode( j ); 00072 00073 // code CfbNXg 00074 if((int)m_schedulerMap.size() <= code) 00075 m_schedulerMap.resize(code+1); 00076 00077 ASSERT( m_schedulerMap[code] == 0, "scheduler set twice(code:%d).", code); 00078 00079 // Y 00080 m_schedulerMap[code] = sched; 00081 } 00082 } 00083 } 00084 } 00085 00086 }
関数の呼び出しグラフ:
Scheduler * OpCodeDispatchSteerer::Steer | ( | OpIterator | opIterator | ) | [virtual] |
Onikiri::DispatchSteererIFを実装しています。
OpCodeSteerer.cpp の 89 行で定義されています。
00090 { 00091 int code = opIterator->GetOpClass().GetCode(); 00092 00093 ASSERT( code >= 0 && code < static_cast<int>(m_schedulerMap.size()), 00094 "unknown opcode %d.", code); 00095 ASSERT( m_schedulerMap[code] != 0, 00096 "scheduler not set(opcode %d).", code); 00097 00098 return m_schedulerMap[code]; 00099 }