ネームスペース Onikiri


構成

struct  Addr
class  AdrHasher
class  AgeIssueSelector
struct  ArchitectureState
class  BPred
class  BranchTypeUtility
class  BTB
struct  BTBPredict
class  Cache
struct  CacheAccess
class  CacheAccessEndEvent
struct  CacheAccessNotificationParam
class  CacheAccessNotifieeIF
class  CacheAccessRequestQueue
struct  CacheAccessResult
class  CacheExtraStateTable
struct  CacheHookParam
struct  CacheLineValue
class  CacheMissedAccessList
class  CacheSystem
class  Checkpoint
class  CheckpointedData
class  CheckpointedDataBase
class  CheckpointMaster
class  ClockedResourceBase
class  ClockedResourceIF
class  ConservativeMemDepPred
class  Core
class  CountDumper
class  CounterBasedHitMissPred
class  DataPredMissRecovery
class  DebugStub
class  Dependency
class  DependencySet
class  DepPredIF
class  DirPredIF
class  Dispatcher
class  DispatchSteererIF
class  Dumper
class  EmulationDebugOp
class  EmulationDebugSystem
class  EmulationOp
class  EmulationSystem
class  EmulationTraceSystem
class  EmulatorFactory
class  EmulatorIF
class  EmulatorWrapper
class  Environment
class  EventBase
class  EventBaseImplement
class  EventDelegate
class  EventList
class  EventWheel
struct  Exception
class  ExecLatencyInfo
class  ExecUnit
class  ExecUnitBase
class  ExecUnitIF
class  ExecUnitReserver
struct  ExtraOpDecodeArgs
class  ExtraOpDecoder
class  ExtraOpDecoderIF
class  ExtraOpInfoIF
class  Fetcher
class  FetchThreadSteererIF
class  fixed_sized_buffer
class  ForwardEmulator
class  GlobalClock
class  GlobalHistory
class  GShare
class  HitMissPredIF
class  HookParameter
class  HookPoint
struct  HookType
class  IcountFetchThreadSteerer
class  InorderIssueSelector
class  InorderList
class  InorderSystem
struct  IntrusiveObjectPoolTag
class  ISAInfoIF
class  IssueSelector
class  IssueSelectorIF
struct  IssueState
class  LatPred
class  LatPredResult
struct  LogicalData
class  LogicalResourceBase
class  LogicalResourceIF
struct  MemAccess
class  MemDepPred
class  MemDepPredIF
class  MemExecUnit
class  MemIF
class  MemOrderManager
class  MemOrderOperations
class  MissedAccessRearchEvent
class  Op
class  OpArray
class  OpBuffer
class  OpClass
class  OpCodeDispatchSteerer
class  OpDetectLatPredMissEvent
class  OpDumpCommittableEvent
class  OpDumpSchedulingEvent
class  OpExecuteEvent
class  OpExtraStateTable
class  OpFinishEvent
class  OpHash
class  OpInfo
struct  OpInitArgs
class  OpIssueEvent
class  OpIterator
class  OpList
class  OpNotifier
class  OpObserver
class  OpRescheduleEvent
class  OpRetireEvent
class  OpStateIF
class  OpStatus
class  OptimisticMemDepPred
class  OpWakeUpEvent
class  OpWriteBackEvent
class  ParamDB
class  ParamExchange
class  ParamExchangeBase
class  ParamExchangeChild
class  ParamPredResult
class  ParamXMLPath
class  ParamXMLPrinter
class  ParamXMLTree
struct  PathReductionMapEntry
class  PerfectMemDepPred
class  PHT
class  PhyReg
class  PhysicalResourceArray
class  PhysicalResourceBase
class  PhysicalResourceIF
class  PhysicalResourceNode
struct  PhysicalResourceNodeInfo
class  Pipeline
class  PipelinedExecUnit
class  PipelineLatch
class  PipelineNodeBase
class  PipelineNodeIF
class  pool_allocator
class  pool_body
class  pool_list
class  pool_unordered_map
class  pool_vector
class  PooledIntrusivePtrObject
class  PooledSharedPtrObject
class  PrefetcherBase
class  PrefetcherIF
class  PriorityEventList
class  RAS
class  Recoverer
class  RegDepPredBase
class  RegDepPredIF
class  RegisterFile
class  RegisterFreeList
class  Renamer
class  ResourceBuilder
struct  ResourceConnectionResult
class  ResourceFactory
class  ResourceTypeConverterIF
class  ResourceTypeTraitBase
class  Retirer
class  RMT
class  RoundRobinFetchThreadSteerer
struct  RuntimeErrorInfo
class  SampleAlwaysHitBrDirPredictor
class  SampleHookModule
class  SampleNull
class  SamplePrefetcher
class  Scheduler
class  ScopedFESetRound
class  SharedPtrObjectPool
class  SimPC
class  SimulationSystem
class  SkipOp
class  StaticHitMissPred
class  StoreSet
class  StreamPrefetcher
class  StridePred
class  StridePrefetcher
class  String
class  SystemBase
class  SystemIF
class  SystemManager
class  SystemManagerIF
class  Thread
class  TimeWheelBase
class  TraceDumper
class  VisualizationDumper

ネームスペース

namespace  AlphaLinux
namespace  EmulatorUtility
namespace  OpClassCode
namespace  PPC64Linux
namespace  SimISAInfoDef

型定義

typedef std::vector< ArchitectureStateArchitectureStateList
typedef AdrHasher CacheHasher
typedef CacheTable::line_type CacheLine
typedef std::pair< Addr, CacheLineValueCachePair
typedef shttl::setassoc_table<
CachePair, CacheHasher, shttl::lru_list<
Addr, u8 > > 
CacheTable
typedef CacheTable::const_iterator CacheTableConstIterator
typedef CacheTable::iterator CacheTableIterator
typedef size_t CheckpointedDataHandle
typedef boost::intrusive_ptr<
EventBaseImplement
EventPtr
typedef float f32
typedef double f64
typedef Dependency MemDependency
typedef boost::shared_ptr<
MemDependency
MemDependencyPtr
typedef StaticHitMissPred<
true > 
OptimisticHitMissPred
typedef Addr PC
typedef StaticHitMissPred<
false > 
PessimisticHitMissPred
typedef int16_t s16
typedef int32_t s32
typedef int64_t s64
typedef int8_t s8
typedef SimISAInfoDef::SimISAInfo_IW32_RW64_AS64 SimISAInfo
typedef uint16_t u16
typedef uint32_t u32
typedef uint64_t u64
typedef uint8_t u8

列挙型

enum  BranchType {
  BT_CONDITIONAL = 0, BT_UNCONDITIONAL, BT_CALL, BT_RETURN,
  BT_CONDITIONAL_RETURN, BT_NON, BT_END
}
enum  CacheAccessEventType {
  CAET_FILL_FROM_NEXT_CACHE_FINISHED, CAET_FILL_FROM_MAL_FINISHED, CAET_WRITE_ALLOCATE_FINISHED, CAET_WRITE_ACCESS_FINISHED,
  CAET_READ_ACCESS_FINISHED
}
enum  CheckpointingPolicy { CP_ALL, CP_AUTO }
enum  DependencySetMaxSize { MAX_DEPENDENCY_SET_SIZE = 1024 }
enum  DUMP_STATE {
  DS_FETCH = 0, DS_RENAME, DS_DISPATCH, DS_SCHEDULE_R,
  DS_SCHEDULE_W, DS_WAITING_UNIT, DS_READY_SIG, DS_WAKEUP,
  DS_SELECT, DS_ISSUE_PRE, DS_ISSUE, DS_EXECUTE,
  DS_WRITEBACK, DS_COMMITTABLE, DS_COMMIT, DS_RETIRE,
  DS_STALL, DS_FLUSH, DS_RESCHEDULE, DS_RESC_REISSUE_EVENT,
  DS_RESC_REISSUE_FINISH, DS_RESC_LPREDMISS, DS_BRANCH_PREDICTION_MISS, DS_LATENCY_PREDICTION_MISS,
  DS_ADDRESS_PREDICTION_MISS, DS_LATENCY_PREDICTION_UPDATE, DS_INVALID
}
enum  DumpDependency { DDT_WAKEUP = 0, DDT_USER_0, DDT_USER_1, DDT_USER_2 }
enum  DumpLane {
  DL_OP = 0, DL_STALL = 1, DL_USER_0, DL_USER_1,
  DL_USER_2, DL_USER_3
}
enum  ISA_TYPE { ISA_ALPHA, ISA_PPC64 }
enum  LoadPipelineModel { LPM_INVALID, LPM_SINGLE_ISSUE, LPM_MULTI_ISSUE }
enum  ResourcePriority {
  RP_LOWEST = 0, RP_COMMIT, RP_EXECUTION_FINISH, RP_DETECT_LATPRED_MISS,
  RP_DEFAULT_UPDATE, RP_DEFAULT_EVENT, RP_WAKEUP_EVENT, RP_HIGHEST
}
enum  SchedulerRemovePolicy { RP_FOLLOW_CORE, RP_REMOVE, RP_RETAIN, RP_REMOVE_AFTER_FINISH }

関数

void AssertDummy (bool)
void AssertDummy (bool, const char *str,...)
void AssertFunction (const RuntimeErrorInfo &info, bool assertCond)
void AssertFunction (const RuntimeErrorInfo &info, bool assertCond, const char *fmt,...)
s64 ConvertEndian (s64 value)
s32 ConvertEndian (s32 value)
s16 ConvertEndian (s16 value)
s8 ConvertEndian (s8 value)
u64 ConvertEndian (u64 value)
u32 ConvertEndian (u32 value)
u16 ConvertEndian (u16 value)
u8 ConvertEndian (u8 value)
template<typename T>
EndianBigToHost (T value)
template<typename T>
EndianHostToSpecified (T value, bool bigEndian)
template<typename T>
void EndianHostToSpecifiedInPlace (T &value, bool bigEndian)
template<typename T>
EndianLittleToHost (T value)
template<typename T>
EndianSpecifiedToHost (T value, bool bigEndian)
template<typename T>
void EndianSpecifiedToHostInPlace (T &value, bool bigEndian)
void EndianSpecifiedToHostInPlace (EmulatorUtility::ELF64_PROGRAM &h, bool bigEndian)
void EndianSpecifiedToHostInPlace (EmulatorUtility::ELF64_SECTION &h, bool bigEndian)
void EndianSpecifiedToHostInPlace (EmulatorUtility::ELF64_HEADER &h, bool bigEndian)
const char * GetTraceDumperStr (DUMP_STATE state)
const char * GetVisualizerDumperStr (DUMP_STATE state)
template<typename ClassType, typename HookPointType, typename Parameter>
INLINE void HookEntry (ClassType *obj, void(ClassType::*MethodPtr)(OpIterator op, Parameter param), HookPointType *hookPoint, OpIterator op, Parameter param)
template<typename ClassType, typename HookPointType>
INLINE void HookEntry (ClassType *obj, void(ClassType::*MethodPtr)(OpIterator op), HookPointType *hookPoint, OpIterator op)
template<typename ClassType, typename HookPointType, typename HookParamType>
INLINE void HookEntry (ClassType *obj, void(ClassType::*MethodPtr)(HookParamType *param), HookPointType *hookPoint, HookParamType *hookParam)
template<typename ClassType, typename HookPointType>
INLINE void HookEntry (ClassType *obj, void(ClassType::*MethodPtr)(), HookPointType *hookPoint)
template<typename ClassType, typename HookPointType, typename Parameter>
NOINLINE void HookEntryBody (ClassType *obj, void(ClassType::*MethodPtr)(OpIterator op, Parameter param), HookPointType *hookPoint, OpIterator op, Parameter param)
template<typename ClassType, typename HookPointType>
NOINLINE void HookEntryBody (ClassType *obj, void(ClassType::*MethodPtr)(OpIterator op), HookPointType *hookPoint, OpIterator op)
template<typename ClassType, typename HookPointType, typename HookParamType>
NOINLINE void HookEntryBody (ClassType *obj, void(ClassType::*MethodPtr)(HookParamType *param), HookPointType *hookPoint, HookParamType *hookParam)
template<typename ClassType, typename HookPointType>
NOINLINE void HookEntryBody (ClassType *obj, void(ClassType::*MethodPtr)(), HookPointType *hookPoint)
template<typename Caller, typename HookPoint, typename Parameter>
INLINE bool HookSectionAfter (Caller *caller, HookPoint *hookPoint, OpIterator op, Parameter *param)
template<typename Caller, typename HookPoint, typename Parameter>
INLINE bool HookSectionAfter (Caller *caller, HookPoint *hookPoint, Parameter *param)
template<typename Caller, typename HookPoint>
INLINE bool HookSectionAfter (Caller *caller, HookPoint *hookPoint, OpIterator op)
template<typename Caller, typename HookPoint>
INLINE bool HookSectionAfter (Caller *caller, HookPoint *hookPoint)
template<typename Caller, typename HookPoint, typename Parameter>
INLINE bool HookSectionBefore (Caller *caller, HookPoint *hookPoint, OpIterator op, Parameter *param)
template<typename Caller, typename HookPoint, typename Parameter>
INLINE bool HookSectionBefore (Caller *caller, HookPoint *hookPoint, Parameter *param)
template<typename Caller, typename HookPoint>
INLINE bool HookSectionBefore (Caller *caller, HookPoint *hookPoint, OpIterator op)
template<typename Caller, typename HookPoint>
INLINE bool HookSectionBefore (Caller *caller, HookPoint *hookPoint)
bool IsInException ()
 ONIKIRI_TEST_CLASS (SHTTL)
template<class T1, class T2>
bool operator!= (const pool_allocator< T1 > &, const pool_allocator< T2 > &)
template<class T1, class T2>
bool operator== (const pool_allocator< T1 > &, const pool_allocator< T2 > &)
void RuntimeErrorFunction (const RuntimeErrorInfo &info, const char *fmt,...)
void RuntimeWarningFunction (const RuntimeErrorInfo &info, const char *fmt,...)
void SetAssertNoThrow (bool noThrow)
void SuppressWaning (bool suppress)

変数

Dumper g_dumper
Dumper g_dumper
Environment g_env
Environment g_env
ParamDB g_paramDB
ParamDB g_paramDB


型定義

typedef std::vector<ArchitectureState> Onikiri::ArchitectureStateList

ArchitectureState.h51 行で定義されています。

typedef AdrHasher Onikiri::CacheHasher

CacheTypes.h50 行で定義されています。

typedef CacheTable::line_type Onikiri::CacheLine

CacheTypes.h82 行で定義されています。

typedef std::pair<Addr, CacheLineValue> Onikiri::CachePair

CacheTypes.h54 行で定義されています。

typedef shttl::setassoc_table< CachePair, CacheHasher, shttl::lru_list< Addr, u8 > > Onikiri::CacheTable

CacheTypes.h62 行で定義されています。

typedef CacheTable::const_iterator Onikiri::CacheTableConstIterator

CacheTypes.h90 行で定義されています。

typedef CacheTable::iterator Onikiri::CacheTableIterator

CacheTypes.h86 行で定義されています。

typedef size_t Onikiri::CheckpointedDataHandle

CheckpointedDataBase.h40 行で定義されています。

typedef boost::intrusive_ptr<EventBaseImplement> Onikiri::EventPtr

EventBase.h174 行で定義されています。

typedef float Onikiri::f32

Types.h70 行で定義されています。

typedef double Onikiri::f64

Types.h71 行で定義されています。

typedef Dependency Onikiri::MemDependency

MemDependency.h41 行で定義されています。

typedef boost::shared_ptr<MemDependency> Onikiri::MemDependencyPtr

MemDependency.h50 行で定義されています。

typedef StaticHitMissPred<true> Onikiri::OptimisticHitMissPred

StaticHitMissPred.h85 行で定義されています。

typedef Addr Onikiri::PC

Addr.h81 行で定義されています。

typedef StaticHitMissPred<false> Onikiri::PessimisticHitMissPred

StaticHitMissPred.h86 行で定義されています。

typedef int16_t Onikiri::s16

Types.h65 行で定義されています。

typedef int32_t Onikiri::s32

Types.h63 行で定義されています。

typedef int64_t Onikiri::s64

Types.h61 行で定義されています。

typedef int8_t Onikiri::s8

Types.h67 行で定義されています。

typedef SimISAInfoDef::SimISAInfo_IW32_RW64_AS64 Onikiri::SimISAInfo

ISAInfo.h74 行で定義されています。

typedef uint16_t Onikiri::u16

Types.h66 行で定義されています。

typedef uint32_t Onikiri::u32

Types.h64 行で定義されています。

typedef uint64_t Onikiri::u64

Types.h62 行で定義されています。

typedef uint8_t Onikiri::u8

Types.h68 行で定義されています。


列挙型

enum Onikiri::BranchType

列挙型の値:
BT_CONDITIONAL 
BT_UNCONDITIONAL 
BT_CALL 
BT_RETURN 
BT_CONDITIONAL_RETURN 
BT_NON 
BT_END 

BranchType.h43 行で定義されています。

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     };

enum Onikiri::CacheAccessEventType

列挙型の値:
CAET_FILL_FROM_NEXT_CACHE_FINISHED 
CAET_FILL_FROM_MAL_FINISHED 
CAET_WRITE_ALLOCATE_FINISHED 
CAET_WRITE_ACCESS_FINISHED 
CAET_READ_ACCESS_FINISHED 

CacheTypes.h160 行で定義されています。

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     };

enum Onikiri::CheckpointingPolicy

列挙型の値:
CP_ALL 
CP_AUTO 

DataPredTypes.h205 行で定義されています。

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::DependencySetMaxSize

列挙型の値:
MAX_DEPENDENCY_SET_SIZE 

Dependency.h105 行で定義されています。

00105 { MAX_DEPENDENCY_SET_SIZE = 1024 };

enum Onikiri::DUMP_STATE

列挙型の値:
DS_FETCH 
DS_RENAME 
DS_DISPATCH 
DS_SCHEDULE_R 
DS_SCHEDULE_W 
DS_WAITING_UNIT 
DS_READY_SIG 
DS_WAKEUP 
DS_SELECT 
DS_ISSUE_PRE 
DS_ISSUE 
DS_EXECUTE 
DS_WRITEBACK 
DS_COMMITTABLE 
DS_COMMIT 
DS_RETIRE 
DS_STALL 
DS_FLUSH 
DS_RESCHEDULE 
DS_RESC_REISSUE_EVENT 
DS_RESC_REISSUE_FINISH 
DS_RESC_LPREDMISS 
DS_BRANCH_PREDICTION_MISS 
DS_LATENCY_PREDICTION_MISS 
DS_ADDRESS_PREDICTION_MISS 
DS_LATENCY_PREDICTION_UPDATE 
DS_INVALID 

DumpState.h38 行で定義されています。

enum Onikiri::DumpDependency

列挙型の値:
DDT_WAKEUP 
DDT_USER_0 
DDT_USER_1 
DDT_USER_2 

DumpState.h88 行で定義されています。

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

列挙型の値:
DL_OP 
DL_STALL 
DL_USER_0 
DL_USER_1 
DL_USER_2 
DL_USER_3 

DumpState.h76 行で定義されています。

00077     {
00078         DL_OP    = 0,       // Reserved for dumping normal pipeline stages.
00079         DL_STALL = 1,       // Reserved for dumping stall states.
00080         DL_USER_0,
00081         DL_USER_1,
00082         DL_USER_2,
00083         DL_USER_3
00084     };

enum Onikiri::ISA_TYPE

列挙型の値:
ISA_ALPHA 
ISA_PPC64 

ISAInfo.h43 行で定義されています。

00044     {
00045         ISA_ALPHA,  // Alpha
00046         ISA_PPC64,  // PowerPC 64bit
00047     };

enum Onikiri::LoadPipelineModel

列挙型の値:
LPM_INVALID 
LPM_SINGLE_ISSUE 
LPM_MULTI_ISSUE 

DataPredTypes.h182 行で定義されています。

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     };

enum Onikiri::ResourcePriority

列挙型の値:
RP_LOWEST 
RP_COMMIT 
RP_EXECUTION_FINISH 
RP_DETECT_LATPRED_MISS 
RP_DEFAULT_UPDATE 
RP_DEFAULT_EVENT 
RP_WAKEUP_EVENT 
RP_HIGHEST 

ResourcePriority.h41 行で定義されています。

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     };

enum Onikiri::SchedulerRemovePolicy

列挙型の値:
RP_FOLLOW_CORE 
RP_REMOVE 
RP_RETAIN 
RP_REMOVE_AFTER_FINISH 

DataPredTypes.h195 行で定義されています。

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]

RuntimeError.h125 行で定義されています。

00125 {};

void Onikiri::AssertDummy ( bool  ,
const char *  str,
  ... 
) [inline]

RuntimeError.h124 行で定義されています。

00124 {};

void Onikiri::AssertFunction ( const RuntimeErrorInfo &  info,
bool  assertCond 
)

RuntimeError.cpp173 行で定義されています。

参照先 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.cpp138 行で定義されています。

参照先 Onikiri::RuntimeErrorInfo::condOnikiri::RuntimeErrorInfo::filestr.

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     }

s64 Onikiri::ConvertEndian ( s64  value  )  [inline]

Endian.h141 行で定義されています。

参照先 ConvertEndian().

00142     {
00143         return (s64)ConvertEndian((u64)value);
00144     }

関数の呼び出しグラフ:

s32 Onikiri::ConvertEndian ( s32  value  )  [inline]

Endian.h137 行で定義されています。

参照先 ConvertEndian().

00138     {
00139         return (s32)ConvertEndian((u32)value);
00140     }

関数の呼び出しグラフ:

s16 Onikiri::ConvertEndian ( s16  value  )  [inline]

Endian.h133 行で定義されています。

参照先 ConvertEndian().

00134     {
00135         return (s16)ConvertEndian((u16)value);
00136     }

関数の呼び出しグラフ:

s8 Onikiri::ConvertEndian ( s8  value  )  [inline]

Endian.h129 行で定義されています。

参照先 ConvertEndian().

00130     {
00131         return (s8)ConvertEndian((u8)value);
00132     }

関数の呼び出しグラフ:

u64 Onikiri::ConvertEndian ( u64  value  )  [inline]

Endian.h118 行で定義されています。

参照先 ConvertEndian().

00119     {
00120         return
00121             ((u64)ConvertEndian((u32)value) << 32)
00122             | (u64)ConvertEndian((u32)(value >> 32));
00123     }

関数の呼び出しグラフ:

u32 Onikiri::ConvertEndian ( u32  value  )  [inline]

Endian.h107 行で定義されています。

参照先 ConvertEndian().

00108     {
00109         return
00110             ((u32)ConvertEndian((u16)value) << 16)
00111             | (u32)ConvertEndian((u16)(value >> 16));
00112     }

関数の呼び出しグラフ:

u16 Onikiri::ConvertEndian ( u16  value  )  [inline]

Endian.h96 行で定義されています。

00097     {
00098         return
00099             ((value & 0x00ff) << 8)
00100             | (value >> 8);
00101     }

u8 Onikiri::ConvertEndian ( u8  value  )  [inline]

Endian.h39 行で定義されています。

参照元 ConvertEndian()Onikiri::MemOrderOperations::CorrectEndian().

00040     {
00041         return value;
00042     }

Here is the caller graph for this function:

template<typename T>
T Onikiri::EndianBigToHost ( value  )  [inline]

Endian.h183 行で定義されています。

参照元 EndianSpecifiedToHost().

00184     {
00185         return EndianHostToBig(value);
00186     }

Here is the caller graph for this function:

template<typename T>
T Onikiri::EndianHostToSpecified ( value,
bool  bigEndian 
) [inline]

Endian.h198 行で定義されています。

参照先 EndianSpecifiedToHost().

参照元 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:

template<typename T>
void Onikiri::EndianHostToSpecifiedInPlace ( T &  value,
bool  bigEndian 
) [inline]

Endian.h210 行で定義されています。

参照先 EndianHostToSpecified().

参照元 Onikiri::EmulatorUtility::Linux64SyscallConv::write_stat64().

00211     {
00212         value = EndianHostToSpecified(value, bigEndian);
00213     }

関数の呼び出しグラフ:

Here is the caller graph for this function:

template<typename T>
T Onikiri::EndianLittleToHost ( value  )  [inline]

Endian.h178 行で定義されています。

参照元 EndianSpecifiedToHost().

00179     {
00180         return EndianHostToLittle(value);
00181     }

Here is the caller graph for this function:

template<typename T>
T Onikiri::EndianSpecifiedToHost ( value,
bool  bigEndian 
) [inline]

Endian.h190 行で定義されています。

参照先 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:

template<typename T>
void Onikiri::EndianSpecifiedToHostInPlace ( T &  value,
bool  bigEndian 
) [inline]

Endian.h205 行で定義されています。

参照先 EndianSpecifiedToHost().

00206     {
00207         value = EndianSpecifiedToHost(value, bigEndian);
00208     }

関数の呼び出しグラフ:

void Onikiri::EndianSpecifiedToHostInPlace ( EmulatorUtility::ELF64_PROGRAM &  h,
bool  bigEndian 
)

ELF64.cpp71 行で定義されています。

参照先 EndianSpecifiedToHostInPlace()Onikiri::EmulatorUtility::ELF64::ELF64_PROGRAM::p_alignOnikiri::EmulatorUtility::ELF64::ELF64_PROGRAM::p_fileszOnikiri::EmulatorUtility::ELF64::ELF64_PROGRAM::p_flagsOnikiri::EmulatorUtility::ELF64::ELF64_PROGRAM::p_memszOnikiri::EmulatorUtility::ELF64::ELF64_PROGRAM::p_offsetOnikiri::EmulatorUtility::ELF64::ELF64_PROGRAM::p_paddrOnikiri::EmulatorUtility::ELF64::ELF64_PROGRAM::p_typeOnikiri::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 
)

ELF64.cpp57 行で定義されています。

参照先 EndianSpecifiedToHostInPlace()Onikiri::EmulatorUtility::ELF64::ELF64_SECTION::sh_addrOnikiri::EmulatorUtility::ELF64::ELF64_SECTION::sh_addralignOnikiri::EmulatorUtility::ELF64::ELF64_SECTION::sh_entsizeOnikiri::EmulatorUtility::ELF64::ELF64_SECTION::sh_flagsOnikiri::EmulatorUtility::ELF64::ELF64_SECTION::sh_infoOnikiri::EmulatorUtility::ELF64::ELF64_SECTION::sh_linkOnikiri::EmulatorUtility::ELF64::ELF64_SECTION::sh_nameOnikiri::EmulatorUtility::ELF64::ELF64_SECTION::sh_offsetOnikiri::EmulatorUtility::ELF64::ELF64_SECTION::sh_sizeOnikiri::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 
)

ELF64.cpp39 行で定義されています。

参照先 Onikiri::EmulatorUtility::ELF64::ELF64_HEADER::e_ehsizeOnikiri::EmulatorUtility::ELF64::ELF64_HEADER::e_entryOnikiri::EmulatorUtility::ELF64::ELF64_HEADER::e_flagsOnikiri::EmulatorUtility::ELF64::ELF64_HEADER::e_machineOnikiri::EmulatorUtility::ELF64::ELF64_HEADER::e_phentsizeOnikiri::EmulatorUtility::ELF64::ELF64_HEADER::e_phnumOnikiri::EmulatorUtility::ELF64::ELF64_HEADER::e_phoffOnikiri::EmulatorUtility::ELF64::ELF64_HEADER::e_shentsizeOnikiri::EmulatorUtility::ELF64::ELF64_HEADER::e_shnumOnikiri::EmulatorUtility::ELF64::ELF64_HEADER::e_shoffOnikiri::EmulatorUtility::ELF64::ELF64_HEADER::e_shstrndxOnikiri::EmulatorUtility::ELF64::ELF64_HEADER::e_typeOnikiri::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]

DumpState.h160 行で定義されています。

00161     {
00162         return g_traceDumperStrTbl[ state ];
00163     }

const char* Onikiri::GetVisualizerDumperStr ( DUMP_STATE  state  )  [inline]

DumpState.h165 行で定義されています。

00166     {
00167         return g_visualizerDumperStrTbl[ state ];
00168     }

template<typename ClassType, typename HookPointType, typename Parameter>
INLINE void Onikiri::HookEntry ( ClassType *  obj,
void(ClassType::*)(OpIterator op, Parameter param)  MethodPtr,
HookPointType *  hookPoint,
OpIterator  op,
Parameter  param 
)

HookUtil.h251 行で定義されています。

参照先 HookEntryBody().

00257      {
00258         if( hookPoint->IsAnyHookRegistered() ){
00259             HookEntryBody( obj, MethodPtr, hookPoint, op, param ); 
00260         }
00261         else{
00262             // {
00263             (obj->*MethodPtr)( op, param ); 
00264         }
00265     }

関数の呼び出しグラフ:

template<typename ClassType, typename HookPointType>
INLINE void Onikiri::HookEntry ( ClassType *  obj,
void(ClassType::*)(OpIterator op)  MethodPtr,
HookPointType *  hookPoint,
OpIterator  op 
)

HookUtil.h192 行で定義されています。

参照先 HookEntryBody().

00197      {
00198         if( hookPoint->IsAnyHookRegistered() ){
00199             HookEntryBody( obj, MethodPtr, hookPoint, op ); 
00200         }
00201         else{
00202             // {
00203             (obj->*MethodPtr)( op ); 
00204         }
00205     }

関数の呼び出しグラフ:

template<typename ClassType, typename HookPointType, typename HookParamType>
INLINE void Onikiri::HookEntry ( ClassType *  obj,
void(ClassType::*)(HookParamType *param)  MethodPtr,
HookPointType *  hookPoint,
HookParamType *  hookParam 
)

HookUtil.h138 行で定義されています。

参照先 HookEntryBody().

00143      {
00144         if( hookPoint->IsAnyHookRegistered() ){
00145             HookEntryBody( obj, MethodPtr, hookPoint, hookParam );
00146         }
00147         else{
00148             // {
00149             (obj->*MethodPtr)(hookParam); 
00150         }
00151     }

関数の呼び出しグラフ:

template<typename ClassType, typename HookPointType>
INLINE void Onikiri::HookEntry ( ClassType *  obj,
void(ClassType::*)()  MethodPtr,
HookPointType *  hookPoint 
)

HookUtil.h82 行で定義されています。

参照先 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:

template<typename ClassType, typename HookPointType, typename Parameter>
NOINLINE void Onikiri::HookEntryBody ( ClassType *  obj,
void(ClassType::*)(OpIterator op, Parameter param)  MethodPtr,
HookPointType *  hookPoint,
OpIterator  op,
Parameter  param 
)

HookUtil.h226 行で定義されています。

参照先 Onikiri::HookType::HOOK_AFTEROnikiri::HookType::HOOK_AROUNDOnikiri::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     }

template<typename ClassType, typename HookPointType>
NOINLINE void Onikiri::HookEntryBody ( ClassType *  obj,
void(ClassType::*)(OpIterator op)  MethodPtr,
HookPointType *  hookPoint,
OpIterator  op 
)

HookUtil.h169 行で定義されています。

参照先 Onikiri::HookType::HOOK_AFTEROnikiri::HookType::HOOK_AROUNDOnikiri::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     }

template<typename ClassType, typename HookPointType, typename HookParamType>
NOINLINE void Onikiri::HookEntryBody ( ClassType *  obj,
void(ClassType::*)(HookParamType *param)  MethodPtr,
HookPointType *  hookPoint,
HookParamType *  hookParam 
)

HookUtil.h114 行で定義されています。

参照先 Onikiri::HookType::HOOK_AFTEROnikiri::HookType::HOOK_AROUNDOnikiri::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     }

template<typename ClassType, typename HookPointType>
NOINLINE void Onikiri::HookEntryBody ( ClassType *  obj,
void(ClassType::*)()  MethodPtr,
HookPointType *  hookPoint 
)

HookUtil.h59 行で定義されています。

参照先 Onikiri::HookType::HOOK_AFTEROnikiri::HookType::HOOK_AROUNDOnikiri::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:

template<typename Caller, typename HookPoint, typename Parameter>
INLINE bool Onikiri::HookSectionAfter ( Caller *  caller,
HookPoint *  hookPoint,
OpIterator  op,
Parameter *  param 
)

HookUtil.h431 行で定義されています。

参照先 Onikiri::HookPoint< CallerT, ParamT >::HasAround()Onikiri::HookType::HOOK_AFTEROnikiri::HookType::HOOK_AROUNDOnikiri::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     }

関数の呼び出しグラフ:

template<typename Caller, typename HookPoint, typename Parameter>
INLINE bool Onikiri::HookSectionAfter ( Caller *  caller,
HookPoint *  hookPoint,
Parameter *  param 
)

HookUtil.h391 行で定義されています。

参照先 Onikiri::HookPoint< CallerT, ParamT >::HasAround()Onikiri::HookType::HOOK_AFTEROnikiri::HookType::HOOK_AROUNDOnikiri::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     }

関数の呼び出しグラフ:

template<typename Caller, typename HookPoint>
INLINE bool Onikiri::HookSectionAfter ( Caller *  caller,
HookPoint *  hookPoint,
OpIterator  op 
)

HookUtil.h350 行で定義されています。

参照先 Onikiri::HookPoint< CallerT, ParamT >::HasAround()Onikiri::HookType::HOOK_AFTEROnikiri::HookType::HOOK_AROUNDOnikiri::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     }

関数の呼び出しグラフ:

template<typename Caller, typename HookPoint>
INLINE bool Onikiri::HookSectionAfter ( Caller *  caller,
HookPoint *  hookPoint 
)

HookUtil.h308 行で定義されています。

参照先 Onikiri::HookPoint< CallerT, ParamT >::HasAround()Onikiri::HookType::HOOK_AFTEROnikiri::HookType::HOOK_AROUNDOnikiri::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:

template<typename Caller, typename HookPoint, typename Parameter>
INLINE bool Onikiri::HookSectionBefore ( Caller *  caller,
HookPoint *  hookPoint,
OpIterator  op,
Parameter *  param 
)

HookUtil.h418 行で定義されています。

参照先 Onikiri::HookPoint< CallerT, ParamT >::HasAround()Onikiri::HookType::HOOK_BEFOREHookSectionAfter()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     }

関数の呼び出しグラフ:

template<typename Caller, typename HookPoint, typename Parameter>
INLINE bool Onikiri::HookSectionBefore ( Caller *  caller,
HookPoint *  hookPoint,
Parameter *  param 
)

HookUtil.h378 行で定義されています。

参照先 Onikiri::HookPoint< CallerT, ParamT >::HasAround()Onikiri::HookType::HOOK_BEFOREHookSectionAfter()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     }

関数の呼び出しグラフ:

template<typename Caller, typename HookPoint>
INLINE bool Onikiri::HookSectionBefore ( Caller *  caller,
HookPoint *  hookPoint,
OpIterator  op 
)

HookUtil.h337 行で定義されています。

参照先 Onikiri::HookPoint< CallerT, ParamT >::HasAround()Onikiri::HookType::HOOK_BEFOREHookSectionAfter()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     }

関数の呼び出しグラフ:

template<typename Caller, typename HookPoint>
INLINE bool Onikiri::HookSectionBefore ( Caller *  caller,
HookPoint *  hookPoint 
)

HookUtil.h295 行で定義されています。

参照先 Onikiri::HookPoint< CallerT, ParamT >::HasAround()Onikiri::HookType::HOOK_BEFOREHookSectionAfter()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.cpp69 行で定義されています。

参照元 Onikiri::ParamDB::CheckResultXML()Onikiri::ParamExchange::~ParamExchange().

00070     {
00071         return g_inException;
00072     }

Here is the caller graph for this function:

Onikiri::ONIKIRI_TEST_CLASS ( SHTTL   ) 

shttl.cpp58 行で定義されています。

参照先 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 

関数の呼び出しグラフ:

template<class T1, class T2>
bool Onikiri::operator!= ( const pool_allocator< T1 > &  ,
const pool_allocator< T2 > &   
)

pool_allocator.h290 行で定義されています。

参照元 shttl::array2d< T, Allocator >::const_iterator::operator!=().

00291     {
00292         return false; 
00293     }

Here is the caller graph for this function:

template<class T1, class T2>
bool Onikiri::operator== ( const pool_allocator< T1 > &  ,
const pool_allocator< T2 > &   
)

pool_allocator.h284 行で定義されています。

参照元 shttl::array2d< T, Allocator >::const_iterator::operator==().

00285     {
00286         return true; 
00287     }

Here is the caller graph for this function:

void Onikiri::RuntimeErrorFunction ( const RuntimeErrorInfo &  info,
const char *  fmt,
  ... 
)

RuntimeError.cpp76 行で定義されています。

参照先 Onikiri::RuntimeErrorInfo::filestr.

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.cpp108 行で定義されています。

参照先 Onikiri::RuntimeErrorInfo::filestr.

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  ) 

RuntimeError.cpp59 行で定義されています。

00060     {
00061         g_assertNoThrow = noThrow;
00062     }

void Onikiri::SuppressWaning ( bool  suppress  ) 

RuntimeError.cpp64 行で定義されています。

参照元 Onikiri::Environment::Initialize().

00065     {
00066         g_suppressWarning = suppress;
00067     }

Here is the caller graph for this function:


変数

Dumper Onikiri::g_dumper

Dumper.cpp45 行で定義されています。

参照元 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 Onikiri::g_dumper

Dumper.cpp45 行で定義されています。

参照元 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().

Environment Onikiri::g_env

Env.cpp38 行で定義されています。

参照元 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().

Environment Onikiri::g_env

Env.cpp38 行で定義されています。

参照元 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 Onikiri::g_paramDB

ParamDB.cpp47 行で定義されています。

参照元 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 Onikiri::g_paramDB

ParamDB.cpp47 行で定義されています。

参照元 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().


Onikiri2に対してTue Jun 18 14:51:03 2013に生成されました。  doxygen 1.4.7