vm: fix build on windows
parent
1351e30e52
commit
abaa051768
|
@ -347,7 +347,7 @@ void factor_vm::end_sampling_profiler_timer()
|
|||
DWORD wait_result = WaitForSingleObject(sampler_thread,
|
||||
3000/FACTOR_PROFILE_SAMPLES_PER_SECOND);
|
||||
if (wait_result != WAIT_OBJECT_0)
|
||||
TerminateThread(sampler_thread);
|
||||
TerminateThread(sampler_thread, 0);
|
||||
sampler_thread = NULL;
|
||||
}
|
||||
|
||||
|
|
|
@ -4,10 +4,10 @@ namespace factor
|
|||
{
|
||||
|
||||
profiling_sample::profiling_sample(factor_vm *vm,
|
||||
cell sample_count,
|
||||
cell gc_sample_count,
|
||||
cell foreign_sample_count,
|
||||
cell foreign_thread_sample_count,
|
||||
fixnum sample_count,
|
||||
fixnum gc_sample_count,
|
||||
fixnum foreign_sample_count,
|
||||
fixnum foreign_thread_sample_count,
|
||||
context *ctx)
|
||||
:
|
||||
sample_count(sample_count),
|
||||
|
@ -21,10 +21,10 @@ profiling_sample::profiling_sample(factor_vm *vm,
|
|||
|
||||
void factor_vm::record_sample()
|
||||
{
|
||||
cell recorded_sample_count;
|
||||
cell recorded_gc_sample_count;
|
||||
cell recorded_foreign_sample_count;
|
||||
cell recorded_foreign_thread_sample_count;
|
||||
fixnum recorded_sample_count;
|
||||
fixnum recorded_gc_sample_count;
|
||||
fixnum recorded_foreign_sample_count;
|
||||
fixnum recorded_foreign_thread_sample_count;
|
||||
|
||||
FACTOR_MEMORY_BARRIER();
|
||||
recorded_sample_count = safepoint_sample_count;
|
||||
|
|
|
@ -6,13 +6,13 @@ namespace factor
|
|||
struct profiling_sample
|
||||
{
|
||||
// Number of samples taken before the safepoint that recorded the sample
|
||||
cell sample_count;
|
||||
fixnum sample_count;
|
||||
// Number of samples taken during GC
|
||||
cell gc_sample_count;
|
||||
fixnum gc_sample_count;
|
||||
// Number of samples taken during foreign code execution
|
||||
cell foreign_sample_count;
|
||||
fixnum foreign_sample_count;
|
||||
// Number of samples taken during code execution in non-Factor threads
|
||||
cell foreign_thread_sample_count;
|
||||
fixnum foreign_thread_sample_count;
|
||||
// Active context during sample
|
||||
context *ctx;
|
||||
/* The callstack at safepoint time. Indexes to the beginning and ending
|
||||
|
@ -20,10 +20,10 @@ struct profiling_sample
|
|||
cell callstack_begin, callstack_end;
|
||||
|
||||
profiling_sample(factor_vm *vm,
|
||||
cell sample_count,
|
||||
cell gc_sample_count,
|
||||
cell foreign_sample_count,
|
||||
cell foreign_thread_sample_count,
|
||||
fixnum sample_count,
|
||||
fixnum gc_sample_count,
|
||||
fixnum foreign_sample_count,
|
||||
fixnum foreign_thread_sample_count,
|
||||
context *ctx);
|
||||
};
|
||||
|
||||
|
|
|
@ -58,24 +58,26 @@ VM_C_API void *factor_memcpy(void *dst, void *src, size_t len);
|
|||
#if defined(FACTOR_64)
|
||||
|
||||
#define FACTOR_ATOMIC_CAS(ptr, old_val, new_val) \
|
||||
(InterlockedCompareExchange64(ptr, new_val, old_val) == old_val)
|
||||
(InterlockedCompareExchange64( \
|
||||
reinterpret_cast<volatile LONG64 *>(ptr), new_val, old_val) == old_val)
|
||||
|
||||
#define FACTOR_ATOMIC_ADD(ptr, val) \
|
||||
InterlockedAdd64(ptr, val)
|
||||
InterlockedAdd64(reinterpret_cast<volatile LONG64 *>(ptr), val)
|
||||
|
||||
#define FACTOR_ATOMIC_SUB(ptr, val) \
|
||||
InterlockedSub64(ptr, val)
|
||||
InterlockedAdd64(reinterpret_cast<volatile LONG64 *>(ptr), -val)
|
||||
|
||||
#else
|
||||
|
||||
#define FACTOR_ATOMIC_CAS(ptr, old_val, new_val) \
|
||||
(InterlockedCompareExchange(ptr, new_val, old_val) == old_val)
|
||||
(InterlockedCompareExchange( \
|
||||
reinterpret_cast<volatile LONG *>(ptr), new_val, old_val) == old_val)
|
||||
|
||||
#define FACTOR_ATOMIC_ADD(ptr, val) \
|
||||
InterlockedAdd(ptr, val)
|
||||
InterlockedAdd(reinterpret_cast<volatile LONG *>(ptr), val)
|
||||
|
||||
#define FACTOR_ATOMIC_SUB(ptr, val) \
|
||||
InterlockedSub(ptr, val)
|
||||
InterlockedAdd(reinterpret_cast<volatile LONG *>(ptr), -val)
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -75,10 +75,10 @@ struct factor_vm
|
|||
/* State kept by the sampling profiler */
|
||||
std::vector<profiling_sample> samples;
|
||||
std::vector<code_block*> sample_callstacks;
|
||||
volatile cell safepoint_sample_count;
|
||||
volatile cell safepoint_gc_sample_count;
|
||||
volatile cell safepoint_foreign_sample_count;
|
||||
volatile cell safepoint_foreign_thread_sample_count;
|
||||
volatile fixnum safepoint_sample_count;
|
||||
volatile fixnum safepoint_gc_sample_count;
|
||||
volatile fixnum safepoint_foreign_sample_count;
|
||||
volatile fixnum safepoint_foreign_thread_sample_count;
|
||||
|
||||
/* GC is off during heap walking */
|
||||
bool gc_off;
|
||||
|
|
Loading…
Reference in New Issue