typedef std::vector<ArchitectureState> Onikiri::ArchitectureStateList |
ArchitectureState.h の 51 行で定義されています。
typedef AdrHasher Onikiri::CacheHasher |
CacheTypes.h の 50 行で定義されています。
CacheTypes.h の 82 行で定義されています。
typedef std::pair<Addr, CacheLineValue> Onikiri::CachePair |
CacheTypes.h の 54 行で定義されています。
typedef shttl::setassoc_table< CachePair, CacheHasher, shttl::lru_list< Addr, u8 > > Onikiri::CacheTable |
CacheTypes.h の 62 行で定義されています。
CacheTypes.h の 90 行で定義されています。
CacheTypes.h の 86 行で定義されています。
typedef size_t Onikiri::CheckpointedDataHandle |
CheckpointedDataBase.h の 40 行で定義されています。
typedef boost::intrusive_ptr<EventBaseImplement> Onikiri::EventPtr |
EventBase.h の 174 行で定義されています。
typedef float Onikiri::f32 |
typedef double Onikiri::f64 |
typedef Dependency Onikiri::MemDependency |
MemDependency.h の 41 行で定義されています。
typedef boost::shared_ptr<MemDependency> Onikiri::MemDependencyPtr |
MemDependency.h の 50 行で定義されています。
typedef StaticHitMissPred<true> Onikiri::OptimisticHitMissPred |
StaticHitMissPred.h の 85 行で定義されています。
typedef Addr Onikiri::PC |
typedef StaticHitMissPred<false> Onikiri::PessimisticHitMissPred |
StaticHitMissPred.h の 86 行で定義されています。
typedef int16_t Onikiri::s16 |
typedef int32_t Onikiri::s32 |
typedef int64_t Onikiri::s64 |
typedef int8_t Onikiri::s8 |
typedef uint16_t Onikiri::u16 |
typedef uint32_t Onikiri::u32 |
typedef uint64_t Onikiri::u64 |
typedef uint8_t Onikiri::u8 |
enum Onikiri::BranchType |
BranchType.h の 43 行で定義されています。
00044 { 00045 BT_CONDITIONAL = 0, 00046 BT_UNCONDITIONAL, 00047 BT_CALL, 00048 BT_RETURN, 00049 BT_CONDITIONAL_RETURN, 00050 BT_NON, 00051 BT_END // dummy 00052 };
CAET_FILL_FROM_NEXT_CACHE_FINISHED | |
CAET_FILL_FROM_MAL_FINISHED | |
CAET_WRITE_ALLOCATE_FINISHED | |
CAET_WRITE_ACCESS_FINISHED | |
CAET_READ_ACCESS_FINISHED |
CacheTypes.h の 160 行で定義されています。
00161 { 00162 // ~XLbVANZXACPendingAccess D 00163 // AccessFinished タ addr YCfD 00164 CAET_FILL_FROM_NEXT_CACHE_FINISHED, 00165 CAET_FILL_FROM_MAL_FINISHED, // From a missed access list 00166 00167 // The end of accesses 00168 CAET_WRITE_ALLOCATE_FINISHED, 00169 CAET_WRITE_ACCESS_FINISHED, 00170 CAET_READ_ACCESS_FINISHED 00171 };
DataPredTypes.h の 205 行で定義されています。
00206 { 00207 // Checkpoints are taken for all ops. 00208 CP_ALL, 00209 00210 // Checkpoints are taken for necessary ops the require 00211 // Core::IsRequiredCheckpointBefore() and Core::IsRequiredCheckpointAfter. 00212 CP_AUTO 00213 };
enum Onikiri::DUMP_STATE |
DumpState.h の 38 行で定義されています。
00039 { 00040 DS_FETCH = 0, 00041 DS_RENAME, 00042 DS_DISPATCH, 00043 DS_SCHEDULE_R, 00044 DS_SCHEDULE_W, 00045 DS_WAITING_UNIT, 00046 DS_READY_SIG, 00047 DS_WAKEUP, 00048 DS_SELECT, 00049 DS_ISSUE_PRE, 00050 DS_ISSUE, 00051 DS_EXECUTE, 00052 DS_WRITEBACK, 00053 DS_COMMITTABLE, 00054 DS_COMMIT, 00055 DS_RETIRE, 00056 00057 DS_STALL, 00058 DS_FLUSH, 00059 DS_RESCHEDULE, 00060 DS_RESC_REISSUE_EVENT, 00061 DS_RESC_REISSUE_FINISH, 00062 DS_RESC_LPREDMISS, 00063 DS_BRANCH_PREDICTION_MISS, 00064 DS_LATENCY_PREDICTION_MISS, 00065 DS_ADDRESS_PREDICTION_MISS, 00066 DS_LATENCY_PREDICTION_UPDATE, 00067 00068 DS_INVALID 00069 };
DumpState.h の 88 行で定義されています。
00089 { 00090 DDT_WAKEUP = 0, // Reserved for dumping wakeup. 00091 DDT_USER_0, 00092 DDT_USER_1, 00093 DDT_USER_2, 00094 };
enum Onikiri::DumpLane |
enum Onikiri::ISA_TYPE |
DataPredTypes.h の 182 行で定義されています。
00183 { 00184 LPM_INVALID, 00185 00186 // Add ports to a RF for a higher level cache read 00187 LPM_SINGLE_ISSUE, 00188 00189 // Do not add ports to a RF and issue load instruction 00190 // more than once. 00191 LPM_MULTI_ISSUE 00192 };
RP_LOWEST | |
RP_COMMIT | |
RP_EXECUTION_FINISH | |
RP_DETECT_LATPRED_MISS | |
RP_DEFAULT_UPDATE | |
RP_DEFAULT_EVENT | |
RP_WAKEUP_EVENT | |
RP_HIGHEST |
ResourcePriority.h の 41 行で定義されています。
00042 { 00043 RP_LOWEST = 0, // Lowest priority 00044 00045 // Commit 00046 // This priority must be lower than CRP_EXECUTION_FINISH. 00047 RP_COMMIT, 00048 00049 // Execution finish. 00050 // This priority must be lower than CRP_DETECT_LATPRED_MISS. 00051 // (see CRP_DETECT_LATPRED_MISS comment) 00052 // 00053 // This priority must be lower than and CRP_DEFAULT_UPDATE, 00054 // because recovery process in execution finish must be done after 00055 // all usual update process.. 00056 // 00057 RP_EXECUTION_FINISH, 00058 00059 // Detecting latency miss prediction. 00060 // This priority must be higher than that of 00061 // execution finish process (CRP_DETECT_LATPRED_MISS). 00062 RP_DETECT_LATPRED_MISS, 00063 00064 // Default priorities 00065 RP_DEFAULT_UPDATE, 00066 RP_DEFAULT_EVENT, 00067 00068 // A 'Wakeup' priority must be higher than that of 'Select', which 00069 // is done in CRP_DEFAULT_UPDATE. 00070 RP_WAKEUP_EVENT, 00071 00072 00073 00074 RP_HIGHEST // Highest priority 00075 };
DataPredTypes.h の 195 行で定義されています。
00196 { 00197 RP_FOLLOW_CORE, // Follow a policy of a core. 00198 RP_REMOVE, // Remove ops after issue. 00199 RP_RETAIN, // Retain ops to commit. (Remove ops after commit.) 00200 RP_REMOVE_AFTER_FINISH // Remove ops after op finishes. 00201 // This policy is similar to that of Alpha 21264. 00202 };
void Onikiri::AssertDummy | ( | bool | ) | [inline] |
void Onikiri::AssertDummy | ( | bool | , | |
const char * | str, | |||
... | ||||
) | [inline] |
void Onikiri::AssertFunction | ( | const RuntimeErrorInfo & | info, | |
bool | assertCond | |||
) |
RuntimeError.cpp の 173 行で定義されています。
参照先 Onikiri::RuntimeErrorInfo::cond.
00174 { 00175 if(assertCond) 00176 return; 00177 if(g_inException) 00178 return; 00179 g_inException = true; 00180 00181 if(g_assertNoThrow){ 00182 assert(0); 00183 } 00184 else{ 00185 throw std::runtime_error( 00186 DebugWhere( info ) + 00187 "Assertion failed.\n" + 00188 "Condition : " + info.cond + "\n" 00189 ); 00190 } 00191 }
void Onikiri::AssertFunction | ( | const RuntimeErrorInfo & | info, | |
bool | assertCond, | |||
const char * | fmt, | |||
... | ||||
) |
RuntimeError.cpp の 138 行で定義されています。
参照先 Onikiri::RuntimeErrorInfo::cond・Onikiri::RuntimeErrorInfo::file・str.
00139 { 00140 if(assertCond) 00141 return; 00142 if(g_inException) 00143 return; 00144 g_inException = true; 00145 00146 if(g_assertNoThrow){ 00147 assert(0); 00148 } 00149 else{ 00150 String str; 00151 00152 va_list arg; 00153 va_start(arg, fmt); 00154 str.format_arg(fmt, arg); 00155 va_end(arg); 00156 00157 if( String(info.file) == "" ){ 00158 throw std::runtime_error( 00159 str + "\n" 00160 ); 00161 } 00162 else{ 00163 throw std::runtime_error( 00164 DebugWhere( info ) + 00165 "Assertion failed.\n" + 00166 "Condition : " + info.cond + "\n" 00167 + str + "\n" 00168 ); 00169 } 00170 } 00171 }
参照先 ConvertEndian().
00119 { 00120 return 00121 ((u64)ConvertEndian((u32)value) << 32) 00122 | (u64)ConvertEndian((u32)(value >> 32)); 00123 }
関数の呼び出しグラフ:
参照先 ConvertEndian().
00108 { 00109 return 00110 ((u32)ConvertEndian((u16)value) << 16) 00111 | (u32)ConvertEndian((u16)(value >> 16)); 00112 }
関数の呼び出しグラフ:
参照元 ConvertEndian()・Onikiri::MemOrderOperations::CorrectEndian().
Here is the caller graph for this function:
T Onikiri::EndianBigToHost | ( | T | value | ) | [inline] |
Here is the caller graph for this function:
T Onikiri::EndianHostToSpecified | ( | T | value, | |
bool | bigEndian | |||
) | [inline] |
参照元 EndianHostToSpecifiedInPlace()・Onikiri::EmulatorUtility::Linux64Loader::InitArgs()・Onikiri::EmulatorUtility::Linux64SyscallConv::syscall_gettimeofday()・Onikiri::EmulatorUtility::Linux64SyscallConv::syscall_time()・Onikiri::EmulatorUtility::Linux64SyscallConv::syscall_times()・Onikiri::EmulatorUtility::VirtualMemory::WriteMemory().
00199 { 00200 return EndianSpecifiedToHost(value, bigEndian); 00201 }
関数の呼び出しグラフ:
Here is the caller graph for this function:
void Onikiri::EndianHostToSpecifiedInPlace | ( | T & | value, | |
bool | bigEndian | |||
) | [inline] |
参照元 Onikiri::EmulatorUtility::Linux64SyscallConv::write_stat64().
00211 { 00212 value = EndianHostToSpecified(value, bigEndian); 00213 }
関数の呼び出しグラフ:
Here is the caller graph for this function:
T Onikiri::EndianLittleToHost | ( | T | value | ) | [inline] |
Here is the caller graph for this function:
T Onikiri::EndianSpecifiedToHost | ( | T | value, | |
bool | bigEndian | |||
) | [inline] |
参照先 EndianBigToHost()・EndianLittleToHost().
参照元 EndianHostToSpecified()・EndianSpecifiedToHostInPlace()・Onikiri::EmulatorUtility::VirtualMemory::ReadMemory()・Onikiri::EmulatorUtility::Linux64SyscallConv::syscall_readv()・Onikiri::EmulatorUtility::Linux64SyscallConv::syscall_writev().
00191 { 00192 if (bigEndian) 00193 return EndianBigToHost(value); 00194 else 00195 return EndianLittleToHost(value); 00196 }
関数の呼び出しグラフ:
Here is the caller graph for this function:
void Onikiri::EndianSpecifiedToHostInPlace | ( | T & | value, | |
bool | bigEndian | |||
) | [inline] |
void Onikiri::EndianSpecifiedToHostInPlace | ( | EmulatorUtility::ELF64_PROGRAM & | h, | |
bool | bigEndian | |||
) |
参照先 EndianSpecifiedToHostInPlace()・Onikiri::EmulatorUtility::ELF64::ELF64_PROGRAM::p_align・Onikiri::EmulatorUtility::ELF64::ELF64_PROGRAM::p_filesz・Onikiri::EmulatorUtility::ELF64::ELF64_PROGRAM::p_flags・Onikiri::EmulatorUtility::ELF64::ELF64_PROGRAM::p_memsz・Onikiri::EmulatorUtility::ELF64::ELF64_PROGRAM::p_offset・Onikiri::EmulatorUtility::ELF64::ELF64_PROGRAM::p_paddr・Onikiri::EmulatorUtility::ELF64::ELF64_PROGRAM::p_type・Onikiri::EmulatorUtility::ELF64::ELF64_PROGRAM::p_vaddr.
00072 { 00073 EndianSpecifiedToHostInPlace( h.p_type, bigEndian); 00074 EndianSpecifiedToHostInPlace( h.p_flags, bigEndian); 00075 EndianSpecifiedToHostInPlace( h.p_offset, bigEndian); 00076 EndianSpecifiedToHostInPlace( h.p_vaddr, bigEndian); 00077 EndianSpecifiedToHostInPlace( h.p_paddr, bigEndian); 00078 EndianSpecifiedToHostInPlace( h.p_filesz, bigEndian); 00079 EndianSpecifiedToHostInPlace( h.p_memsz, bigEndian); 00080 EndianSpecifiedToHostInPlace( h.p_align, bigEndian); 00081 }
関数の呼び出しグラフ:
void Onikiri::EndianSpecifiedToHostInPlace | ( | EmulatorUtility::ELF64_SECTION & | h, | |
bool | bigEndian | |||
) |
参照先 EndianSpecifiedToHostInPlace()・Onikiri::EmulatorUtility::ELF64::ELF64_SECTION::sh_addr・Onikiri::EmulatorUtility::ELF64::ELF64_SECTION::sh_addralign・Onikiri::EmulatorUtility::ELF64::ELF64_SECTION::sh_entsize・Onikiri::EmulatorUtility::ELF64::ELF64_SECTION::sh_flags・Onikiri::EmulatorUtility::ELF64::ELF64_SECTION::sh_info・Onikiri::EmulatorUtility::ELF64::ELF64_SECTION::sh_link・Onikiri::EmulatorUtility::ELF64::ELF64_SECTION::sh_name・Onikiri::EmulatorUtility::ELF64::ELF64_SECTION::sh_offset・Onikiri::EmulatorUtility::ELF64::ELF64_SECTION::sh_size・Onikiri::EmulatorUtility::ELF64::ELF64_SECTION::sh_type.
00058 { 00059 EndianSpecifiedToHostInPlace( h.sh_name, bigEndian); 00060 EndianSpecifiedToHostInPlace( h.sh_type, bigEndian); 00061 EndianSpecifiedToHostInPlace( h.sh_flags, bigEndian); 00062 EndianSpecifiedToHostInPlace( h.sh_addr, bigEndian); 00063 EndianSpecifiedToHostInPlace( h.sh_offset, bigEndian); 00064 EndianSpecifiedToHostInPlace( h.sh_size, bigEndian); 00065 EndianSpecifiedToHostInPlace( h.sh_link, bigEndian); 00066 EndianSpecifiedToHostInPlace( h.sh_info, bigEndian); 00067 EndianSpecifiedToHostInPlace( h.sh_addralign, bigEndian); 00068 EndianSpecifiedToHostInPlace( h.sh_entsize, bigEndian); 00069 }
関数の呼び出しグラフ:
void Onikiri::EndianSpecifiedToHostInPlace | ( | EmulatorUtility::ELF64_HEADER & | h, | |
bool | bigEndian | |||
) |
参照先 Onikiri::EmulatorUtility::ELF64::ELF64_HEADER::e_ehsize・Onikiri::EmulatorUtility::ELF64::ELF64_HEADER::e_entry・Onikiri::EmulatorUtility::ELF64::ELF64_HEADER::e_flags・Onikiri::EmulatorUtility::ELF64::ELF64_HEADER::e_machine・Onikiri::EmulatorUtility::ELF64::ELF64_HEADER::e_phentsize・Onikiri::EmulatorUtility::ELF64::ELF64_HEADER::e_phnum・Onikiri::EmulatorUtility::ELF64::ELF64_HEADER::e_phoff・Onikiri::EmulatorUtility::ELF64::ELF64_HEADER::e_shentsize・Onikiri::EmulatorUtility::ELF64::ELF64_HEADER::e_shnum・Onikiri::EmulatorUtility::ELF64::ELF64_HEADER::e_shoff・Onikiri::EmulatorUtility::ELF64::ELF64_HEADER::e_shstrndx・Onikiri::EmulatorUtility::ELF64::ELF64_HEADER::e_type・Onikiri::EmulatorUtility::ELF64::ELF64_HEADER::e_version.
参照元 EndianSpecifiedToHostInPlace().
00040 { 00041 // e_ident sv 00042 EndianSpecifiedToHostInPlace( h.e_type, bigEndian); 00043 EndianSpecifiedToHostInPlace( h.e_machine, bigEndian); 00044 EndianSpecifiedToHostInPlace( h.e_version, bigEndian); 00045 EndianSpecifiedToHostInPlace( h.e_entry, bigEndian); 00046 EndianSpecifiedToHostInPlace( h.e_phoff, bigEndian); 00047 EndianSpecifiedToHostInPlace( h.e_shoff, bigEndian); 00048 EndianSpecifiedToHostInPlace( h.e_flags, bigEndian); 00049 EndianSpecifiedToHostInPlace( h.e_ehsize, bigEndian); 00050 EndianSpecifiedToHostInPlace( h.e_phentsize, bigEndian); 00051 EndianSpecifiedToHostInPlace( h.e_phnum, bigEndian); 00052 EndianSpecifiedToHostInPlace( h.e_shentsize, bigEndian); 00053 EndianSpecifiedToHostInPlace( h.e_shnum, bigEndian); 00054 EndianSpecifiedToHostInPlace( h.e_shstrndx , bigEndian); 00055 }
Here is the caller graph for this function:
const char* Onikiri::GetTraceDumperStr | ( | DUMP_STATE | state | ) | [inline] |
const char* Onikiri::GetVisualizerDumperStr | ( | DUMP_STATE | state | ) | [inline] |
INLINE void Onikiri::HookEntry | ( | ClassType * | obj, | |
void(ClassType::*)(OpIterator op, Parameter param) | MethodPtr, | |||
HookPointType * | hookPoint, | |||
OpIterator | op, | |||
Parameter | param | |||
) |
HookUtil.h の 251 行で定義されています。
参照先 HookEntryBody().
00257 { 00258 if( hookPoint->IsAnyHookRegistered() ){ 00259 HookEntryBody( obj, MethodPtr, hookPoint, op, param ); 00260 } 00261 else{ 00262 // { 00263 (obj->*MethodPtr)( op, param ); 00264 } 00265 }
関数の呼び出しグラフ:
INLINE void Onikiri::HookEntry | ( | ClassType * | obj, | |
void(ClassType::*)(OpIterator op) | MethodPtr, | |||
HookPointType * | hookPoint, | |||
OpIterator | op | |||
) |
HookUtil.h の 192 行で定義されています。
参照先 HookEntryBody().
00197 { 00198 if( hookPoint->IsAnyHookRegistered() ){ 00199 HookEntryBody( obj, MethodPtr, hookPoint, op ); 00200 } 00201 else{ 00202 // { 00203 (obj->*MethodPtr)( op ); 00204 } 00205 }
関数の呼び出しグラフ:
INLINE void Onikiri::HookEntry | ( | ClassType * | obj, | |
void(ClassType::*)(HookParamType *param) | MethodPtr, | |||
HookPointType * | hookPoint, | |||
HookParamType * | hookParam | |||
) |
HookUtil.h の 138 行で定義されています。
参照先 HookEntryBody().
00143 { 00144 if( hookPoint->IsAnyHookRegistered() ){ 00145 HookEntryBody( obj, MethodPtr, hookPoint, hookParam ); 00146 } 00147 else{ 00148 // { 00149 (obj->*MethodPtr)(hookParam); 00150 } 00151 }
関数の呼び出しグラフ:
INLINE void Onikiri::HookEntry | ( | ClassType * | obj, | |
void(ClassType::*)() | MethodPtr, | |||
HookPointType * | hookPoint | |||
) |
HookUtil.h の 82 行で定義されています。
参照先 HookEntryBody().
参照元 Onikiri::RMT::AllocateReg()・Onikiri::RMT::DeallocateReg()・Onikiri::Scheduler::ExitUpperPipeline()・Onikiri::Cache::Invalidate()・Onikiri::Scheduler::Issue()・Onikiri::SystemManager::NotifyMemoryAllocation()・Onikiri::SystemManager::NotifyProcessTermination()・Onikiri::SystemManager::NotifySyscallReadFileToMemory()・Onikiri::SystemManager::NotifySyscallWriteFileFromMemory()・Onikiri::Fetcher::PredictNextPC()・Onikiri::Cache::Read()・Onikiri::RMT::ReleaseReg()・Onikiri::SimulationSystem::SimulateCycle()・Onikiri::Cache::UpdateTable()・Onikiri::Cache::Write().
00086 { 00087 if( hookPoint->IsAnyHookRegistered() ){ 00088 HookEntryBody( obj, MethodPtr, hookPoint ); 00089 } 00090 else{ 00091 // { 00092 (obj->*MethodPtr)(); 00093 } 00094 }
関数の呼び出しグラフ:
Here is the caller graph for this function:
NOINLINE void Onikiri::HookEntryBody | ( | ClassType * | obj, | |
void(ClassType::*)(OpIterator op, Parameter param) | MethodPtr, | |||
HookPointType * | hookPoint, | |||
OpIterator | op, | |||
Parameter | param | |||
) |
HookUtil.h の 226 行で定義されています。
参照先 Onikiri::HookType::HOOK_AFTER・Onikiri::HookType::HOOK_AROUND・Onikiri::HookType::HOOK_BEFORE.
00232 { 00233 hookPoint->Trigger( op, obj, param, HookType::HOOK_BEFORE); 00234 00235 if( !hookPoint->HasAround() ) { 00236 // { 00237 (obj->*MethodPtr)( op, param ); 00238 } else { 00239 // o^ 00240 hookPoint->Trigger( op, obj, param, HookType::HOOK_AROUND); 00241 } 00242 00243 hookPoint->Trigger( op, obj, param, HookType::HOOK_AFTER); 00244 }
NOINLINE void Onikiri::HookEntryBody | ( | ClassType * | obj, | |
void(ClassType::*)(OpIterator op) | MethodPtr, | |||
HookPointType * | hookPoint, | |||
OpIterator | op | |||
) |
HookUtil.h の 169 行で定義されています。
参照先 Onikiri::HookType::HOOK_AFTER・Onikiri::HookType::HOOK_AROUND・Onikiri::HookType::HOOK_BEFORE.
00174 { 00175 hookPoint->Trigger( op, obj, HookType::HOOK_BEFORE); 00176 00177 if( !hookPoint->HasAround() ) { 00178 // { 00179 (obj->*MethodPtr)( op ); 00180 } else { 00181 // o^ 00182 hookPoint->Trigger( op, obj, HookType::HOOK_AROUND); 00183 } 00184 00185 hookPoint->Trigger( op, obj, HookType::HOOK_AFTER); 00186 }
NOINLINE void Onikiri::HookEntryBody | ( | ClassType * | obj, | |
void(ClassType::*)(HookParamType *param) | MethodPtr, | |||
HookPointType * | hookPoint, | |||
HookParamType * | hookParam | |||
) |
HookUtil.h の 114 行で定義されています。
参照先 Onikiri::HookType::HOOK_AFTER・Onikiri::HookType::HOOK_AROUND・Onikiri::HookType::HOOK_BEFORE.
00119 { 00120 hookPoint->Trigger(obj, hookParam, HookType::HOOK_BEFORE); 00121 00122 if( !hookPoint->HasAround() ) { 00123 // { 00124 (obj->*MethodPtr)(hookParam); 00125 } else { 00126 // o^ 00127 hookPoint->Trigger(obj, hookParam, HookType::HOOK_AROUND); 00128 } 00129 00130 hookPoint->Trigger(obj, hookParam, HookType::HOOK_AFTER); 00131 }
NOINLINE void Onikiri::HookEntryBody | ( | ClassType * | obj, | |
void(ClassType::*)() | MethodPtr, | |||
HookPointType * | hookPoint | |||
) |
HookUtil.h の 59 行で定義されています。
参照先 Onikiri::HookType::HOOK_AFTER・Onikiri::HookType::HOOK_AROUND・Onikiri::HookType::HOOK_BEFORE.
参照元 HookEntry().
00063 { 00064 hookPoint->Trigger(obj, HookType::HOOK_BEFORE); 00065 00066 if( !hookPoint->HasAround() ) { 00067 // { 00068 (obj->*MethodPtr)(); 00069 } else { 00070 // o^ 00071 hookPoint->Trigger(obj, HookType::HOOK_AROUND); 00072 } 00073 00074 hookPoint->Trigger(obj, HookType::HOOK_AFTER); 00075 }
Here is the caller graph for this function:
INLINE bool Onikiri::HookSectionAfter | ( | Caller * | caller, | |
HookPoint * | hookPoint, | |||
OpIterator | op, | |||
Parameter * | param | |||
) |
HookUtil.h の 431 行で定義されています。
参照先 Onikiri::HookPoint< CallerT, ParamT >::HasAround()・Onikiri::HookType::HOOK_AFTER・Onikiri::HookType::HOOK_AROUND・Onikiri::HookPoint< CallerT, ParamT >::Trigger().
00432 { 00433 if( hookPoint->HasAround() ){ 00434 hookPoint->Trigger( op, caller, param, HookType::HOOK_AROUND ); 00435 } 00436 00437 hookPoint->Trigger( op, caller, param, HookType::HOOK_AFTER ); 00438 return true; 00439 }
関数の呼び出しグラフ:
INLINE bool Onikiri::HookSectionAfter | ( | Caller * | caller, | |
HookPoint * | hookPoint, | |||
Parameter * | param | |||
) |
HookUtil.h の 391 行で定義されています。
参照先 Onikiri::HookPoint< CallerT, ParamT >::HasAround()・Onikiri::HookType::HOOK_AFTER・Onikiri::HookType::HOOK_AROUND・Onikiri::HookPoint< CallerT, ParamT >::Trigger().
00392 { 00393 if( hookPoint->HasAround() ){ 00394 hookPoint->Trigger( caller, param, HookType::HOOK_AROUND ); 00395 } 00396 00397 hookPoint->Trigger( caller, param, HookType::HOOK_AFTER ); 00398 return true; 00399 }
関数の呼び出しグラフ:
INLINE bool Onikiri::HookSectionAfter | ( | Caller * | caller, | |
HookPoint * | hookPoint, | |||
OpIterator | op | |||
) |
HookUtil.h の 350 行で定義されています。
参照先 Onikiri::HookPoint< CallerT, ParamT >::HasAround()・Onikiri::HookType::HOOK_AFTER・Onikiri::HookType::HOOK_AROUND・Onikiri::HookPoint< CallerT, ParamT >::Trigger().
00351 { 00352 if( hookPoint->HasAround() ){ 00353 hookPoint->Trigger( op, caller, HookType::HOOK_AROUND ); 00354 } 00355 00356 hookPoint->Trigger( op, caller, HookType::HOOK_AFTER ); 00357 return true; 00358 }
関数の呼び出しグラフ:
INLINE bool Onikiri::HookSectionAfter | ( | Caller * | caller, | |
HookPoint * | hookPoint | |||
) |
HookUtil.h の 308 行で定義されています。
参照先 Onikiri::HookPoint< CallerT, ParamT >::HasAround()・Onikiri::HookType::HOOK_AFTER・Onikiri::HookType::HOOK_AROUND・Onikiri::HookPoint< CallerT, ParamT >::Trigger().
参照元 HookSectionBefore().
00309 { 00310 if( hookPoint->HasAround() ){ 00311 hookPoint->Trigger( caller, HookType::HOOK_AROUND ); 00312 } 00313 00314 hookPoint->Trigger( caller, HookType::HOOK_AFTER ); 00315 return true; 00316 }
関数の呼び出しグラフ:
Here is the caller graph for this function:
INLINE bool Onikiri::HookSectionBefore | ( | Caller * | caller, | |
HookPoint * | hookPoint, | |||
OpIterator | op, | |||
Parameter * | param | |||
) |
HookUtil.h の 418 行で定義されています。
参照先 Onikiri::HookPoint< CallerT, ParamT >::HasAround()・Onikiri::HookType::HOOK_BEFORE・HookSectionAfter()・Onikiri::HookPoint< CallerT, ParamT >::Trigger().
00419 { 00420 hookPoint->Trigger( op, caller, param, HookType::HOOK_BEFORE ); 00421 if( hookPoint->HasAround() ){ 00422 HookSectionAfter( caller, hookPoint, op, param ); 00423 return true; // Exit the loop in HOOK_SECTION. 00424 } 00425 else{ 00426 return false; // Not exit the loop, process a original routine. 00427 } 00428 }
関数の呼び出しグラフ:
INLINE bool Onikiri::HookSectionBefore | ( | Caller * | caller, | |
HookPoint * | hookPoint, | |||
Parameter * | param | |||
) |
HookUtil.h の 378 行で定義されています。
参照先 Onikiri::HookPoint< CallerT, ParamT >::HasAround()・Onikiri::HookType::HOOK_BEFORE・HookSectionAfter()・Onikiri::HookPoint< CallerT, ParamT >::Trigger().
00379 { 00380 hookPoint->Trigger( caller, param, HookType::HOOK_BEFORE ); 00381 if( hookPoint->HasAround() ){ 00382 HookSectionAfter( caller, hookPoint, param ); 00383 return true; // Exit the loop in HOOK_SECTION. 00384 } 00385 else{ 00386 return false; // Not exit the loop, process a original routine. 00387 } 00388 }
関数の呼び出しグラフ:
INLINE bool Onikiri::HookSectionBefore | ( | Caller * | caller, | |
HookPoint * | hookPoint, | |||
OpIterator | op | |||
) |
HookUtil.h の 337 行で定義されています。
参照先 Onikiri::HookPoint< CallerT, ParamT >::HasAround()・Onikiri::HookType::HOOK_BEFORE・HookSectionAfter()・Onikiri::HookPoint< CallerT, ParamT >::Trigger().
00338 { 00339 hookPoint->Trigger( op, caller, HookType::HOOK_BEFORE ); 00340 if( hookPoint->HasAround() ){ 00341 HookSectionAfter( caller, hookPoint, op ); 00342 return true; // Exit the loop in HOOK_SECTION. 00343 } 00344 else{ 00345 return false; // Not exit the loop, process a original routine. 00346 } 00347 }
関数の呼び出しグラフ:
INLINE bool Onikiri::HookSectionBefore | ( | Caller * | caller, | |
HookPoint * | hookPoint | |||
) |
HookUtil.h の 295 行で定義されています。
参照先 Onikiri::HookPoint< CallerT, ParamT >::HasAround()・Onikiri::HookType::HOOK_BEFORE・HookSectionAfter()・Onikiri::HookPoint< CallerT, ParamT >::Trigger().
00296 { 00297 hookPoint->Trigger( caller, HookType::HOOK_BEFORE ); 00298 if( hookPoint->HasAround() ){ 00299 HookSectionAfter( caller, hookPoint ); 00300 return true; // Exit the loop in HOOK_SECTION. 00301 } 00302 else{ 00303 return false; // Not exit the loop, process a original routine. 00304 } 00305 }
関数の呼び出しグラフ:
bool Onikiri::IsInException | ( | ) |
RuntimeError.cpp の 69 行で定義されています。
参照元 Onikiri::ParamDB::CheckResultXML()・Onikiri::ParamExchange::~ParamExchange().
Here is the caller graph for this function:
Onikiri::ONIKIRI_TEST_CLASS | ( | SHTTL | ) |
参照先 shttl::counter_base< value_type, value_type >::above_threshold()・shttl::counter_base< value_type, value_type >::dec()・shttl::counter_base< value_type, value_type >::inc().
00059 { 00060 public: 00061 00062 ONIKIRI_TEST_METHOD(SHTTL_BitOperations) 00063 { 00064 ONIKIRI_TEST_ARE_EQUAL( (u64)0, xor_convolute(0, 10), "XOR convolution failed." ); 00065 ONIKIRI_TEST_ARE_EQUAL( (u64)1, xor_convolute(1, 10), "XOR convolution failed." ); 00066 ONIKIRI_TEST_ARE_EQUAL( (u64)255, xor_convolute(255, 10), "XOR convolution failed." ); 00067 ONIKIRI_TEST_ARE_EQUAL( (u64)1023, xor_convolute(1023 << 10, 10), "XOR convolution failed." ); 00068 ONIKIRI_TEST_ARE_EQUAL( (u64)1022, xor_convolute((1023 << 10) | 1, 10), "XOR convolution failed." ); 00069 } 00070 00071 ONIKIRI_TEST_METHOD(SHTTL_Counter) 00072 { 00073 // 1bit counter 00074 { 00075 counter<u8> c( 00076 0, // init 00077 0, // min 00078 1, // max 00079 1, // add 00080 1, // sub 00081 1 // threshold 00082 ); 00083 00084 ONIKIRI_TEST_IS_TRUE( c.dec() == 0, "" ); 00085 ONIKIRI_TEST_IS_TRUE( c.dec() == 0, "" ); 00086 00087 ONIKIRI_TEST_IS_TRUE( c.inc() == 1, "" ); 00088 ONIKIRI_TEST_IS_TRUE( c.inc() == 1, "" ); 00089 00090 ONIKIRI_TEST_IS_TRUE( c.dec() == 0, "" ); 00091 ONIKIRI_TEST_IS_TRUE( c.dec() == 0, "" ); 00092 00093 ONIKIRI_TEST_IS_TRUE( c.inc() == 1, "" ); 00094 ONIKIRI_TEST_IS_TRUE( c.inc() == 1, "" ); 00095 00096 ONIKIRI_TEST_IS_TRUE( c.above_threshold() == true, "" ); 00097 ONIKIRI_TEST_IS_TRUE( c.dec() == 0, "" ); 00098 ONIKIRI_TEST_IS_TRUE( c.above_threshold() == false, "" ); 00099 } 00100 00101 // 2bit counter 00102 { 00103 counter<u8> c( 00104 0, // init 00105 0, // min 00106 3, // max 00107 1, // add 00108 1, // sub 00109 2 // threshold 00110 ); 00111 00112 ONIKIRI_TEST_IS_TRUE( c.dec() == 0, "" ); 00113 ONIKIRI_TEST_IS_TRUE( c.dec() == 0, "" ); 00114 00115 ONIKIRI_TEST_IS_TRUE( c.inc() == 1, "" ); 00116 ONIKIRI_TEST_IS_TRUE( c.inc() == 2, "" ); 00117 ONIKIRI_TEST_IS_TRUE( c.inc() == 3, "" ); 00118 ONIKIRI_TEST_IS_TRUE( c.inc() == 3, "" ); 00119 00120 ONIKIRI_TEST_IS_TRUE( c.dec() == 2, "" ); 00121 ONIKIRI_TEST_IS_TRUE( c.dec() == 1, "" ); 00122 00123 ONIKIRI_TEST_IS_TRUE( c.inc() == 2, "" ); 00124 ONIKIRI_TEST_IS_TRUE( c.inc() == 3, "" ); 00125 00126 ONIKIRI_TEST_IS_TRUE( c.above_threshold() == true, "" ); 00127 ONIKIRI_TEST_IS_TRUE( c.dec() == 2, "" ); 00128 ONIKIRI_TEST_IS_TRUE( c.above_threshold() == true, "" ); 00129 ONIKIRI_TEST_IS_TRUE( c.dec() == 1, "" ); 00130 ONIKIRI_TEST_IS_TRUE( c.above_threshold() == false, "" ); 00131 ONIKIRI_TEST_IS_TRUE( c.dec() == 0, "" ); 00132 ONIKIRI_TEST_IS_TRUE( c.above_threshold() == false, "" ); 00133 ONIKIRI_TEST_IS_TRUE( c.dec() == 0, "" ); 00134 ONIKIRI_TEST_IS_TRUE( c.above_threshold() == false, "" ); 00135 } 00136 } 00137 00138 ONIKIRI_TEST_METHOD(SHTTL_CounterArray) 00139 { 00140 // 2bit counter array 00141 { 00142 int size = 256; 00143 counter_array<u8> ca( 00144 size, // size 00145 0, // init 00146 0, // min 00147 3, // max 00148 1, // add 00149 1, // sub 00150 2 // threshold 00151 ); 00152 00153 for( int i = 0; i < size; i++ ){ 00154 ONIKIRI_TEST_IS_TRUE( ca[i].dec() == 0, "" ); 00155 ONIKIRI_TEST_IS_TRUE( ca[i].dec() == 0, "" ); 00156 00157 ONIKIRI_TEST_IS_TRUE( ca[i].inc() == 1, "" ); 00158 ONIKIRI_TEST_IS_TRUE( ca[i].inc() == 2, "" ); 00159 ONIKIRI_TEST_IS_TRUE( ca[i].inc() == 3, "" ); 00160 ONIKIRI_TEST_IS_TRUE( ca[i].inc() == 3, "" ); 00161 00162 ONIKIRI_TEST_IS_TRUE( ca[i].dec() == 2, "" ); 00163 ONIKIRI_TEST_IS_TRUE( ca[i].dec() == 1, "" ); 00164 00165 ONIKIRI_TEST_IS_TRUE( ca[i].inc() == 2, "" ); 00166 ONIKIRI_TEST_IS_TRUE( ca[i].inc() == 3, "" ); 00167 00168 ONIKIRI_TEST_IS_TRUE( ca[i].above_threshold() == true, "" ); 00169 ONIKIRI_TEST_IS_TRUE( ca[i].dec() == 2, "" ); 00170 ONIKIRI_TEST_IS_TRUE( ca[i].above_threshold() == true, "" ); 00171 ONIKIRI_TEST_IS_TRUE( ca[i].dec() == 1, "" ); 00172 ONIKIRI_TEST_IS_TRUE( ca[i].above_threshold() == false, "" ); 00173 ONIKIRI_TEST_IS_TRUE( ca[i].dec() == 0, "" ); 00174 ONIKIRI_TEST_IS_TRUE( ca[i].above_threshold() == false, "" ); 00175 ONIKIRI_TEST_IS_TRUE( ca[i].dec() == 0, "" ); 00176 ONIKIRI_TEST_IS_TRUE( ca[i].above_threshold() == false, "" ); 00177 } 00178 } 00179 } 00180 00181 ONIKIRI_TEST_METHOD(SHTTL_LRU) 00182 { 00183 LRU_Test< lru_time<u64> > ( "'lru_time<u64>' test failed."); 00184 LRU_Test< lru_order<u64> >( "'lru_order<u64>' test failed."); 00185 LRU_Test< lru_list<u64> > ( "'lru_list<u64>' test failed."); 00186 LRU_Test< lru_time<int> > ( "'lru_time<int>' test failed."); 00187 LRU_Test< lru_order<int> >( "'lru_order<int>' test failed."); 00188 LRU_Test< lru_list<int> > ( "'lru_list<int>' test failed."); 00189 LRU_Test< lru_time<u8> > ( "'lru_time<u8>' test failed."); 00190 LRU_Test< lru_order<u8> > ( "'lru_order<u8>' test failed."); 00191 LRU_Test< lru_list<u8> > ( "'lru_list<u8>' test failed."); 00192 } 00193 00194 ONIKIRI_TEST_METHOD(SHTTL_SetAssociativeTable) 00195 { 00196 // u64, int and u16 are key types. 00197 SetAssocTableTest<u64>(); 00198 SetAssocTableTest<int>(); 00199 SetAssocTableTest<u16>(); 00200 // <u8> cannot pass the test because there is not enough address 00201 // space. 00202 } 00203 00204 ONIKIRI_TEST_METHOD(SHTTL_FullAssociativeTable) 00205 { 00206 // index:0 (full associative), offset:0 00207 { 00208 setassoc_table< std::pair<u64, u64>, std_hasher< u64 >, lru<u64> > 00209 table( std_hasher< u64 >(0, 0), 8 ); 00210 TableTest( table, "Set associative table(full associative) test failed." ); 00211 } 00212 00213 { 00214 setassoc_table< std::pair<u64, u64>, static_off_hasher< u64, 0 >, lru<u64> > 00215 table( static_off_hasher< u64, 0 >(0), 8 ); 00216 TableTest( table, "Set associative table(full associative) test failed." ); 00217 } 00218 } 00219 00220 ONIKIRI_TEST_METHOD(SHTTL_DirectMapTable) 00221 { 00222 // way:1 (direct map) 00223 { 00224 setassoc_table< std::pair<u64, u64>, std_hasher< u64 >, lru<u64> > 00225 table( std_hasher< u64 >(5, 6), 1 ); 00226 TableTest( table, "Set associative table(direct map) test failed." ); 00227 } 00228 00229 { 00230 setassoc_table< std::pair<u64, u64>, static_off_hasher< u64, 6 >, lru<u64> > 00231 table( static_off_hasher< u64, 6 >(5), 1 ); 00232 TableTest( table, "Set associative table(direct map) test failed." ); 00233 } 00234 } 00235 00236 private: 00237 00238 // 00239 // --- setassoc_table test --- 00240 // 00241 template <class KeyType> 00242 void SetAssocTableTest() 00243 { 00244 { 00245 setassoc_table< std::pair<KeyType, u64>, std_hasher< KeyType >, lru<u64> > 00246 table( std_hasher< KeyType >(5, 6), 8 ); 00247 TableTest( table, "Set associative table test failed." ); 00248 } 00249 00250 { 00251 setassoc_table< std::pair<KeyType, u64>, std_hasher< KeyType >, nlu<u64> > 00252 table( std_hasher< KeyType >(5, 6), 8 ); 00253 TableTest( table, "Set associative table test failed." ); 00254 } 00255 00256 { 00257 setassoc_table< std::pair<KeyType, u64>, static_off_hasher< KeyType, 6 >, lru<u64> > 00258 table( static_off_hasher< KeyType, 6 >(5), 8 ); 00259 TableTest( table, "Set associative table test failed." ); 00260 } 00261 00262 { 00263 setassoc_table< std::pair<KeyType, u64>, simple_hasher< KeyType >, lru<u64> > 00264 table( simple_hasher< KeyType >(5), 8 ); 00265 TableTest( table, "Set associative table test failed." ); 00266 } 00267 00268 // Iterator set test 00269 { 00270 const int ways = 8; 00271 const int setBits = 5; 00272 00273 const int magic = rand(); 00274 00275 typedef 00276 setassoc_table< std::pair<KeyType, u64>, std_hasher< KeyType >, lru<u64> > 00277 TableType; 00278 TableType table( std_hasher< KeyType >(setBits, 0), ways ); 00279 00280 // Write a magic number to all lines in the first set. 00281 for( int i = 0; i < ways; i++ ){ 00282 table.write( 00283 static_cast<KeyType>(i*table.set_num()), 00284 (size_t)magic 00285 ); 00286 } 00287 00288 // Check whether a magic number is written to the lines. 00289 size_t count = 0; 00290 TableType::hasher_size_type index = table.index(0); 00291 for( TableType::iterator i = table.begin_set( index ); i != table.end_set( index ); ++i ){ 00292 ONIKIRI_TEST_IS_TRUE( i->value == magic, "begin_set()/end_set() test failed." ); 00293 count++; 00294 } 00295 ONIKIRI_TEST_IS_TRUE( count == table.way_num(), "begin_set()/end_set() test failed." ); 00296 00297 } 00298 } 00299 00300 template <class Table> 00301 void TableTest( Table& table, const char* msg ) 00302 { 00303 table.clear(); 00304 00305 // Read from a cleared table. 00306 // Results must be always miss. 00307 for(size_t i = 0;i < table.size();i++){ 00308 Table::key_type addr = rand(); 00309 if(i == 0) 00310 addr = ~(Table::key_type)0; 00311 else if(i == 1) 00312 addr = 0; 00313 00314 u64 val_des; 00315 ONIKIRI_TEST_IS_TRUE( table.find( addr ) == table.end(), msg ); 00316 if( table.find(addr) == table.end() ){ 00317 ONIKIRI_TEST_IS_TRUE( table.read( addr, &val_des ) == table.end(), msg ); 00318 } 00319 } 00320 00321 // write test 00322 for(size_t i = 0;i < table.size();i++){ 00323 u64 val = rand(); 00324 Table::key_type addr = rand(); 00325 00326 // special address test 00327 if(i == 0) 00328 addr = ~(Table::key_type)0; 00329 else if(i == 1) 00330 addr = 0; 00331 00332 00333 // single write test 00334 u64 val_des; 00335 table.write( addr, val ); 00336 ONIKIRI_TEST_IS_TRUE( table.read( addr, &val_des ) != table.end(), msg ); 00337 ONIKIRI_TEST_IS_TRUE( val_des == val, msg ); 00338 ONIKIRI_TEST_IS_TRUE( table.find( addr ) != table.end(), msg ); 00339 00340 // multiple write test 00341 for( int j = 0; j < 1024; j++ ){ 00342 Table::key_type test_addr = rand(); 00343 if( table.index(test_addr) != table.index( addr ) ) 00344 table.write( addr, val ); 00345 } 00346 ONIKIRI_TEST_IS_TRUE( table.read( addr, &val_des ) != table.end(), msg ); 00347 ONIKIRI_TEST_IS_TRUE( val_des == val, msg ); 00348 ONIKIRI_TEST_IS_TRUE( table.find(addr) != table.end(), msg ); 00349 00350 // invalidate test 00351 table.invalidate( addr ); 00352 ONIKIRI_TEST_IS_TRUE( table.find(addr) == table.end(), msg ); 00353 if( table.find(addr) != table.end() ){ 00354 ONIKIRI_TEST_IS_TRUE( table.read( addr, &val_des ) == table.end(), msg ); 00355 } 00356 } 00357 00358 // iterator test 00359 { 00360 Table::key_type addr = rand(); 00361 u64 val = rand(); 00362 00363 table.write( addr, val ); 00364 00365 typedef typename Table::iterator iterator; 00366 for( iterator i = table.begin(); i != table.end(); ++i ){ 00367 i->valid = false; 00368 } 00369 00370 ONIKIRI_TEST_IS_TRUE( table.find( addr ) == table.end(), msg ); 00371 00372 typedef typename Table::const_iterator const_iterator; 00373 for( const_iterator i = table.begin(); i != table.end(); ++i ){ 00374 ONIKIRI_TEST_IS_TRUE( !i->valid, msg ); 00375 } 00376 } 00377 } 00378 00379 // LRU algorithm test 00380 template< typename lru_target > 00381 void LRU_Test( const char* msg ) 00382 { 00383 const int set_num = 8; 00384 const int way_num = 8; 00385 for( int index = 0; index < set_num; index++ ){ 00386 std::vector<size_t> arr( way_num ); 00387 for( int way = 0; way < way_num; way++ ){ 00388 arr[way] = way; 00389 } 00390 00391 do { 00392 lru_target lru_oa; 00393 lru_oa.construct( set_num, way_num ); 00394 for(int i = 0; i < way_num; ++i) { 00395 lru_target::key_type key = index; 00396 lru_oa.touch( index, arr[i], key ); 00397 } 00398 // Check if a first touched index is next replace target(); 00399 ONIKIRI_TEST_IS_TRUE( lru_oa.target( index ) == arr[0], msg ); 00400 00401 // Check all combinations. 00402 } while( std::next_permutation( arr.begin(), arr.end() - 1 ) ); 00403 } 00404 } 00405 }; 00406
関数の呼び出しグラフ:
bool Onikiri::operator!= | ( | const pool_allocator< T1 > & | , | |
const pool_allocator< T2 > & | ||||
) |
pool_allocator.h の 290 行で定義されています。
参照元 shttl::array2d< T, Allocator >::const_iterator::operator!=().
Here is the caller graph for this function:
bool Onikiri::operator== | ( | const pool_allocator< T1 > & | , | |
const pool_allocator< T2 > & | ||||
) |
pool_allocator.h の 284 行で定義されています。
参照元 shttl::array2d< T, Allocator >::const_iterator::operator==().
Here is the caller graph for this function:
void Onikiri::RuntimeErrorFunction | ( | const RuntimeErrorInfo & | info, | |
const char * | fmt, | |||
... | ||||
) |
RuntimeError.cpp の 76 行で定義されています。
参照先 Onikiri::RuntimeErrorInfo::file・str.
00077 { 00078 String str; 00079 00080 va_list arg; 00081 va_start(arg, fmt); 00082 str.format_arg(fmt, arg); 00083 va_end(arg); 00084 00085 std::runtime_error error(""); 00086 if( String(info.file) == "" ){ 00087 error = std::runtime_error( 00088 str + "\n\n" 00089 ); 00090 } 00091 else{ 00092 error = std::runtime_error( 00093 "\n" + DebugWhere( info ) + " Message: " + str + "\n" 00094 ); 00095 } 00096 00097 if(g_inException){ 00098 //printf( "%s\n", error.what() ); 00099 return; 00100 } 00101 g_inException = true; 00102 throw error; 00103 }
void Onikiri::RuntimeWarningFunction | ( | const RuntimeErrorInfo & | info, | |
const char * | fmt, | |||
... | ||||
) |
RuntimeError.cpp の 108 行で定義されています。
参照先 Onikiri::RuntimeErrorInfo::file・str.
00109 { 00110 String str; 00111 00112 va_list arg; 00113 va_start(arg, fmt); 00114 str.format_arg(fmt, arg); 00115 va_end(arg); 00116 00117 00118 String msg; 00119 if( String(info.file) == "" ){ 00120 msg = str; 00121 } 00122 else{ 00123 msg = 00124 DebugWhere( info ) + 00125 "Warning:\n" + 00126 str; 00127 } 00128 00129 if( !g_suppressWarning ){ 00130 printf( "%s\n\n", msg.c_str() ); 00131 } 00132 }
void Onikiri::SetAssertNoThrow | ( | bool | noThrow | ) |
void Onikiri::SuppressWaning | ( | bool | suppress | ) |
RuntimeError.cpp の 64 行で定義されています。
参照元 Onikiri::Environment::Initialize().
Here is the caller graph for this function:
Dumper.cpp の 45 行で定義されています。
参照元 Onikiri::OpBuffer::BeginStall()・Onikiri::Pipeline::BeginStall()・Onikiri::OpBuffer::CheckAndDumpStallBegin()・Onikiri::InorderList::Commit()・Onikiri::MemOrderManager::DetectAccessOrderViolation()・Onikiri::Dispatcher::Dispatch()・Onikiri::PipelineLatch::DumpStallBegin()・Onikiri::PipelineLatch::DumpStallEnd()・Onikiri::OpBuffer::EndStall()・Onikiri::Pipeline::EndStall()・Onikiri::Renamer::EnterPipeline()・Onikiri::Scheduler::EvaluateDependency()・Onikiri::AgeIssueSelector::EvaluateSelect()・Onikiri::InorderIssueSelector::EvaluateSelect()・Onikiri::ExecUnitBase::Execute()・Onikiri::Fetcher::Fetch()・Onikiri::SystemManager::Finalize()・Onikiri::InorderList::Flush()・Onikiri::SystemManager::InitializeResources()・Onikiri::Renamer::ProcessNOP()・Onikiri::BPred::RecoveryFromBPredMiss()・Onikiri::Scheduler::Reschedule()・Onikiri::InorderList::Retire()・Onikiri::InorderSystem::Run()・Onikiri::SimulationSystem::Run()・Onikiri::OpDetectLatPredMissEvent::Update()・Onikiri::OpDumpCommittableEvent::Update()・Onikiri::OpDumpSchedulingEvent::Update()・Onikiri::Scheduler::WriteBackBegin()・Onikiri::Scheduler::WriteBackEnd().
Dumper.cpp の 45 行で定義されています。
参照元 Onikiri::Pipeline::BeginStall()・Onikiri::OpBuffer::BeginStall()・Onikiri::OpBuffer::CheckAndDumpStallBegin()・Onikiri::InorderList::Commit()・Onikiri::MemOrderManager::DetectAccessOrderViolation()・Onikiri::Dispatcher::Dispatch()・Onikiri::PipelineLatch::DumpStallBegin()・Onikiri::PipelineLatch::DumpStallEnd()・Onikiri::Pipeline::EndStall()・Onikiri::OpBuffer::EndStall()・Onikiri::Renamer::EnterPipeline()・Onikiri::Scheduler::EvaluateDependency()・Onikiri::InorderIssueSelector::EvaluateSelect()・Onikiri::AgeIssueSelector::EvaluateSelect()・Onikiri::ExecUnitBase::Execute()・Onikiri::Fetcher::Fetch()・Onikiri::SystemManager::Finalize()・Onikiri::InorderList::Flush()・Onikiri::SystemManager::InitializeResources()・Onikiri::Renamer::ProcessNOP()・Onikiri::BPred::RecoveryFromBPredMiss()・Onikiri::Scheduler::Reschedule()・Onikiri::InorderList::Retire()・Onikiri::SimulationSystem::Run()・Onikiri::InorderSystem::Run()・Onikiri::OpDumpSchedulingEvent::Update()・Onikiri::OpDumpCommittableEvent::Update()・Onikiri::OpDetectLatPredMissEvent::Update()・Onikiri::Scheduler::WriteBackBegin()・Onikiri::Scheduler::WriteBackEnd().
参照元 Onikiri::StreamPrefetcher::AllocateStream()・Onikiri::DebugStub::DebugStub()・Onikiri::SampleNull::Finalize()・Onikiri::SampleNull::Initialize()・Onikiri::CountDumper::Initialize()・Onikiri::VisualizationDumper::Initialize()・Onikiri::SystemManager::InitializeEmulator()・Onikiri::SystemManager::InitializeResources()・Onikiri::EmulatorUtility::Linux64SyscallConv::kill_helper()・main()・Onikiri::StreamPrefetcher::OnCacheAccess()・Onikiri::StridePrefetcher::OnCacheAccess()・Onikiri::SampleHookModule::OnCycleBegin()・Onikiri::SampleHookModule::OnCycleEvaluate()・Onikiri::SampleHookModule::OnCycleProcess()・Onikiri::SampleHookModule::OnOpDispatch()・Onikiri::SampleHookModule::OnOpExecutionFinish()・Onikiri::SampleHookModule::OnOpFetch()・Onikiri::SampleHookModule::OnOpFlushed()・Onikiri::SampleHookModule::OnOpIssue()・Onikiri::SampleHookModule::OnOpRename()・Onikiri::SampleHookModule::OnOpRescheduled()・Onikiri::SampleHookModule::OnOpRetire()・Onikiri::StreamPrefetcher::Prefetch()・Onikiri::EmulationTraceSystem::Run()・Onikiri::EmulatorUtility::Operation::testroundmode()・Onikiri::StreamPrefetcher::UpdateMonitorStream()・Onikiri::StreamPrefetcher::UpdateTrainingStream().
参照元 Onikiri::StreamPrefetcher::AllocateStream()・Onikiri::DebugStub::DebugStub()・Onikiri::SampleNull::Finalize()・Onikiri::VisualizationDumper::Initialize()・Onikiri::CountDumper::Initialize()・Onikiri::SampleNull::Initialize()・Onikiri::SystemManager::InitializeEmulator()・Onikiri::SystemManager::InitializeResources()・Onikiri::EmulatorUtility::Linux64SyscallConv::kill_helper()・main()・Onikiri::StridePrefetcher::OnCacheAccess()・Onikiri::StreamPrefetcher::OnCacheAccess()・Onikiri::SampleHookModule::OnCycleBegin()・Onikiri::SampleHookModule::OnCycleEvaluate()・Onikiri::SampleHookModule::OnCycleProcess()・Onikiri::SampleHookModule::OnOpDispatch()・Onikiri::SampleHookModule::OnOpExecutionFinish()・Onikiri::SampleHookModule::OnOpFetch()・Onikiri::SampleHookModule::OnOpFlushed()・Onikiri::SampleHookModule::OnOpIssue()・Onikiri::SampleHookModule::OnOpRename()・Onikiri::SampleHookModule::OnOpRescheduled()・Onikiri::SampleHookModule::OnOpRetire()・Onikiri::StreamPrefetcher::Prefetch()・Onikiri::EmulationTraceSystem::Run()・Onikiri::EmulatorUtility::Operation::testroundmode()・Onikiri::StreamPrefetcher::UpdateMonitorStream()・Onikiri::StreamPrefetcher::UpdateTrainingStream().
ParamDB.cpp の 47 行で定義されています。
参照元 Onikiri::ParamExchangeBase::ChainParamMap()・Onikiri::Environment::Finalize()・Onikiri::ResourceBuilder::GetConfigurationPath()・Onikiri::EmulatorUtility::ProcessCreateParam::GetTargetBasePath()・Onikiri::Environment::Initialize()・Onikiri::SystemManager::InitializeEmulator()・Onikiri::ResourceBuilder::LoadConstantSection()・Onikiri::ResourceBuilder::LoadParameterSection()・Onikiri::ResourceBuilder::LoadStructureSection()・Onikiri::ParamExchangeBase::ParamBindingEntry()・Onikiri::ParamExchangeBase::ParamEntry()・Onikiri::ParamExchangeBase::ResultEntry()・Onikiri::ParamExchangeBase::ResultRateEntry().
ParamDB.cpp の 47 行で定義されています。
参照元 Onikiri::ParamExchangeBase::ChainParamMap()・Onikiri::Environment::Finalize()・Onikiri::ResourceBuilder::GetConfigurationPath()・Onikiri::EmulatorUtility::ProcessCreateParam::GetTargetBasePath()・Onikiri::Environment::Initialize()・Onikiri::SystemManager::InitializeEmulator()・Onikiri::ResourceBuilder::LoadConstantSection()・Onikiri::ResourceBuilder::LoadParameterSection()・Onikiri::ResourceBuilder::LoadStructureSection()・Onikiri::ParamExchangeBase::ParamBindingEntry()・Onikiri::ParamExchangeBase::ParamEntry()・Onikiri::ParamExchangeBase::ResultEntry()・Onikiri::ParamExchangeBase::ResultRateEntry().