クラス Onikiri::OpCodeDispatchSteerer

#include <OpCodeSteerer.h>

Onikiri::OpCodeDispatchSteererに対する継承グラフ

Inheritance graph
[凡例]
Onikiri::OpCodeDispatchSteererのコラボレーション図

Collaboration graph
[凡例]
すべてのメンバ一覧

Public メソッド

void Initialize (InitPhase phase)
 OpCodeDispatchSteerer ()
virtual SchedulerSteer (OpIterator opIterator)
virtual ~OpCodeDispatchSteerer ()

説明

OpCodeSteerer.h45 行で定義されています。


コンストラクタとデストラクタ

OpCodeDispatchSteerer::OpCodeDispatchSteerer (  ) 

OpCodeSteerer.cpp43 行で定義されています。

00044 {
00045     m_core = 0;
00046 }

OpCodeDispatchSteerer::~OpCodeDispatchSteerer (  )  [virtual]

OpCodeSteerer.cpp48 行で定義されています。

参照先 Onikiri::PhysicalResourceNode::ReleaseParam().

00049 {
00050     ReleaseParam();
00051 }

関数の呼び出しグラフ:


関数

void OpCodeDispatchSteerer::Initialize ( InitPhase  phase  ) 

OpCodeSteerer.cpp53 行で定義されています。

参照先 ASSERTOnikiri::PhysicalResourceNode::CheckNodeInitialized()codeOnikiri::Scheduler::GetExecUnitList()Onikiri::Core::GetNumScheduler()Onikiri::Core::GetScheduler()Onikiri::PhysicalResourceNode::INIT_POST_CONNECTIONOnikiri::PhysicalResourceNode::INIT_PRE_CONNECTIONOnikiri::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.cpp89 行で定義されています。

参照先 ASSERTcode.

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 }


このクラスの説明は次のファイルから生成されました:
Onikiri2に対してTue Jun 18 15:07:17 2013に生成されました。  doxygen 1.4.7