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