summaryrefslogtreecommitdiffstats
path: root/source/base/base_profile.cpp
blob: 443a9b8ae19cef466c0226742a21a6496980bd94 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#if ARCH_x86_64
internal Profile *x86_start_profile(MemArena *arena, void (*callback)(), void *callback_arg)
{
 ScratchArena scratch = scratch_start(arena);
Unused(scratch);
 u64 start_high, start_low, end_high, end_low;

 // GetCycles(start_high, start_low);

 Profile *p = PushStruct(arena, Profile);
 p->start = start_high - start_low;
 callback(arg);

 // GetCycles(end_high, end_low);
 p->end = end_high - end_low;
 return p;
// do the logging inline
{
 Log("log the profile or something");
}
 scratch_end(scratch);
}

#elif ARCH_ARM

#else
#error platform not supported for profiling
#endif