3 struct profiling_sample_count {
4 /* Number of samples taken before the safepoint that recorded the sample */
6 /* Number of samples taken during GC */
7 fixnum gc_sample_count;
8 /* Number of samples taken during unoptimized compiler */
9 fixnum jit_sample_count;
10 /* Number of samples taken during foreign code execution */
11 fixnum foreign_sample_count;
12 /* Number of samples taken during code execution in non-Factor threads */
13 fixnum foreign_thread_sample_count;
15 profiling_sample_count()
19 foreign_sample_count(0),
20 foreign_thread_sample_count(0) {}
22 profiling_sample_count(fixnum sample_count, fixnum gc_sample_count,
23 fixnum jit_sample_count, fixnum foreign_sample_count,
24 fixnum foreign_thread_sample_count)
25 : sample_count(sample_count),
26 gc_sample_count(gc_sample_count),
27 jit_sample_count(jit_sample_count),
28 foreign_sample_count(foreign_sample_count),
29 foreign_thread_sample_count(foreign_thread_sample_count) {}
32 return sample_count + gc_sample_count + jit_sample_count +
33 foreign_sample_count + foreign_thread_sample_count ==
37 profiling_sample_count record_counts() volatile;
38 void clear() volatile;
41 struct profiling_sample {
43 profiling_sample_count counts;
44 /* Active thread during sample */
46 /* The callstack at safepoint time. Indexes to the beginning and ending
47 code_block entries in the vm sample_callstacks array. */
48 cell callstack_begin, callstack_end;
50 profiling_sample(factor_vm* vm, bool prolog_p,
51 profiling_sample_count const& counts, cell thread);