From 6214c2e6edf147dad216dad8fa45c11dca1b4a17 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Sat, 15 Jul 2017 22:55:08 +0200 Subject: [PATCH] [profiler] Change sample frequency to a 32-bit int. The unit is hertz, so values above 100-1000 are already extremely unusual. Changing it to a 32-bit int avoids word tearing on 32-bit platforms. --- mono/metadata/profiler-private.h | 2 +- mono/metadata/profiler.c | 4 ++-- mono/metadata/profiler.h | 4 ++-- mono/mini/mini-posix.c | 2 +- mono/profiler/log.c | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/mono/metadata/profiler-private.h b/mono/metadata/profiler-private.h index 99cbf1430ee..e087be07eb6 100644 --- a/mono/metadata/profiler-private.h +++ b/mono/metadata/profiler-private.h @@ -49,7 +49,7 @@ typedef struct { MonoProfilerHandle sampling_owner; MonoSemType sampling_semaphore; MonoProfilerSampleMode sample_mode; - uint64_t sample_freq; + guint32 sample_freq; gboolean allocations; #define _MONO_PROFILER_EVENT(name) \ diff --git a/mono/metadata/profiler.c b/mono/metadata/profiler.c index eae4fd5751d..4197bef450d 100644 --- a/mono/metadata/profiler.c +++ b/mono/metadata/profiler.c @@ -327,7 +327,7 @@ mono_profiler_enable_sampling (MonoProfilerHandle handle) } mono_bool -mono_profiler_set_sample_mode (MonoProfilerHandle handle, MonoProfilerSampleMode mode, uint64_t freq) +mono_profiler_set_sample_mode (MonoProfilerHandle handle, MonoProfilerSampleMode mode, uint32_t freq) { if (handle != mono_profiler_state.sampling_owner) return FALSE; @@ -341,7 +341,7 @@ mono_profiler_set_sample_mode (MonoProfilerHandle handle, MonoProfilerSampleMode } mono_bool -mono_profiler_get_sample_mode (MonoProfilerHandle handle, MonoProfilerSampleMode *mode, uint64_t *freq) +mono_profiler_get_sample_mode (MonoProfilerHandle handle, MonoProfilerSampleMode *mode, uint32_t *freq) { if (mode) *mode = mono_profiler_state.sample_mode; diff --git a/mono/metadata/profiler.h b/mono/metadata/profiler.h index 263f6e6866c..6dd1ea33633 100644 --- a/mono/metadata/profiler.h +++ b/mono/metadata/profiler.h @@ -141,7 +141,7 @@ MONO_API mono_bool mono_profiler_enable_sampling (MonoProfilerHandle handle); * * This function is async safe. */ -MONO_API mono_bool mono_profiler_set_sample_mode (MonoProfilerHandle handle, MonoProfilerSampleMode mode, uint64_t freq); +MONO_API mono_bool mono_profiler_set_sample_mode (MonoProfilerHandle handle, MonoProfilerSampleMode mode, uint32_t freq); /* * Retrieves the current sampling mode and/or frequency (in Hz). Returns TRUE if @@ -150,7 +150,7 @@ MONO_API mono_bool mono_profiler_set_sample_mode (MonoProfilerHandle handle, Mon * * This function is async safe. */ -MONO_API mono_bool mono_profiler_get_sample_mode (MonoProfilerHandle handle, MonoProfilerSampleMode *mode, uint64_t *freq); +MONO_API mono_bool mono_profiler_get_sample_mode (MonoProfilerHandle handle, MonoProfilerSampleMode *mode, uint32_t *freq); /* * Enables instrumentation of GC allocations. This is necessary so that managed diff --git a/mono/mini/mini-posix.c b/mono/mini/mini-posix.c index fa77749eab4..8b17287a21a 100644 --- a/mono/mini/mini-posix.c +++ b/mono/mini/mini-posix.c @@ -651,7 +651,7 @@ init: clock_init (mode); for (guint64 sleep = clock_get_time_ns (); InterlockedRead (&sampling_thread_running); clock_sleep_ns_abs (sleep)) { - uint64_t freq; + uint32_t freq; MonoProfilerSampleMode new_mode; mono_profiler_get_sample_mode (NULL, &new_mode, &freq); diff --git a/mono/profiler/log.c b/mono/profiler/log.c index 3b75deb6146..aab2036e6c1 100644 --- a/mono/profiler/log.c +++ b/mono/profiler/log.c @@ -4184,7 +4184,7 @@ proflog_icall_SetCallDepth (gint32 value) ICALL_EXPORT void proflog_icall_GetSampleMode (MonoProfilerSampleMode *mode, gint32 *frequency) { - guint64 freq; + uint32_t freq; mono_profiler_get_sample_mode (log_profiler.handle, mode, &freq); -- 2.25.1