sampling_profiler_p = false;
atomic::fence();
DWORD wait_result = WaitForSingleObject(sampler_thread,
- 3000/samples_per_second);
+ 3000*(DWORD)samples_per_second);
if (wait_result != WAIT_OBJECT_0)
TerminateThread(sampler_thread, 0);
sampler_thread = NULL;
*end = sample_callstacks.size();
}
-void factor_vm::set_sampling_profiler(int rate)
+void factor_vm::set_sampling_profiler(fixnum rate)
{
bool sampling_p = !!rate;
if (sampling_p == sampling_profiler_p)
sample_callstacks.swap(sample_callstack_graveyard);
}
-void factor_vm::start_sampling_profiler(int rate)
+void factor_vm::start_sampling_profiler(fixnum rate)
{
samples_per_second = rate;
safepoint_sample_counts.clear();
/* Is profiling enabled? */
bool counting_profiler_p;
volatile bool sampling_profiler_p;
- int samples_per_second;
+ fixnum samples_per_second;
/* Global variables used to pass fault handler state from signal handler
to VM */
void clear_samples();
void record_sample();
void record_callstack_sample(cell *begin, cell *end);
- void start_sampling_profiler(int rate);
+ void start_sampling_profiler(fixnum rate);
void end_sampling_profiler();
- void set_sampling_profiler(int rate);
+ void set_sampling_profiler(fixnum rate);
void enqueue_safepoint_sample(cell samples, cell pc, bool foreign_thread_p);
void primitive_sampling_profiler();
void primitive_get_samples();