get sampler working under windows
parent
252915a37c
commit
d9afe92c97
|
@ -390,6 +390,9 @@ void factor_vm::factorbug()
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (sampling_profiler_p)
|
||||||
|
end_sampling_profiler();
|
||||||
|
|
||||||
fep_p = true;
|
fep_p = true;
|
||||||
|
|
||||||
std::cout << "Starting low level debugger..." << std::endl;
|
std::cout << "Starting low level debugger..." << std::endl;
|
||||||
|
|
|
@ -312,7 +312,7 @@ void factor_vm::sampler_thread_loop()
|
||||||
assert(QueryPerformanceCounter(&counter));
|
assert(QueryPerformanceCounter(&counter));
|
||||||
while (FACTOR_MEMORY_BARRIER(), sampling_profiler_p)
|
while (FACTOR_MEMORY_BARRIER(), sampling_profiler_p)
|
||||||
{
|
{
|
||||||
Sleep(0);
|
SwitchToThread();
|
||||||
assert(QueryPerformanceCounter(&new_counter));
|
assert(QueryPerformanceCounter(&new_counter));
|
||||||
cell samples = 0;
|
cell samples = 0;
|
||||||
while (new_counter.QuadPart - counter.QuadPart > units_per_sample) {
|
while (new_counter.QuadPart - counter.QuadPart > units_per_sample) {
|
||||||
|
@ -320,6 +320,7 @@ void factor_vm::sampler_thread_loop()
|
||||||
++samples;
|
++samples;
|
||||||
counter.QuadPart += units_per_sample;
|
counter.QuadPart += units_per_sample;
|
||||||
}
|
}
|
||||||
|
if (samples > 0)
|
||||||
enqueue_safepoint_sample(samples, 0, false);
|
enqueue_safepoint_sample(samples, 0, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -344,6 +345,8 @@ void factor_vm::start_sampling_profiler_timer()
|
||||||
|
|
||||||
void factor_vm::end_sampling_profiler_timer()
|
void factor_vm::end_sampling_profiler_timer()
|
||||||
{
|
{
|
||||||
|
sampling_profiler_p = false;
|
||||||
|
FACTOR_MEMORY_BARRIER();
|
||||||
DWORD wait_result = WaitForSingleObject(sampler_thread,
|
DWORD wait_result = WaitForSingleObject(sampler_thread,
|
||||||
3000/FACTOR_PROFILE_SAMPLES_PER_SECOND);
|
3000/FACTOR_PROFILE_SAMPLES_PER_SECOND);
|
||||||
if (wait_result != WAIT_OBJECT_0)
|
if (wait_result != WAIT_OBJECT_0)
|
||||||
|
|
|
@ -92,6 +92,8 @@ void factor_vm::start_sampling_profiler()
|
||||||
{
|
{
|
||||||
safepoint_sample_count = 0;
|
safepoint_sample_count = 0;
|
||||||
safepoint_gc_sample_count = 0;
|
safepoint_gc_sample_count = 0;
|
||||||
|
safepoint_foreign_sample_count = 0;
|
||||||
|
safepoint_foreign_thread_sample_count = 0;
|
||||||
clear_samples();
|
clear_samples();
|
||||||
samples.reserve(10*FACTOR_PROFILE_SAMPLES_PER_SECOND);
|
samples.reserve(10*FACTOR_PROFILE_SAMPLES_PER_SECOND);
|
||||||
sample_callstacks.reserve(100*FACTOR_PROFILE_SAMPLES_PER_SECOND);
|
sample_callstacks.reserve(100*FACTOR_PROFILE_SAMPLES_PER_SECOND);
|
||||||
|
|
|
@ -12,6 +12,8 @@ factor_vm::factor_vm() :
|
||||||
safepoint_fep(false),
|
safepoint_fep(false),
|
||||||
safepoint_sample_count(0),
|
safepoint_sample_count(0),
|
||||||
safepoint_gc_sample_count(0),
|
safepoint_gc_sample_count(0),
|
||||||
|
safepoint_foreign_sample_count(0),
|
||||||
|
safepoint_foreign_thread_sample_count(0),
|
||||||
gc_off(false),
|
gc_off(false),
|
||||||
current_gc(NULL),
|
current_gc(NULL),
|
||||||
gc_events(NULL),
|
gc_events(NULL),
|
||||||
|
|
Loading…
Reference in New Issue