[profiler] Change sample frequency to a 32-bit int.
authorAlex Rønne Petersen <alexrp@xamarin.com>
Sat, 15 Jul 2017 20:55:08 +0000 (22:55 +0200)
committerAlex Rønne Petersen <alexrp@xamarin.com>
Sat, 15 Jul 2017 21:08:24 +0000 (23:08 +0200)
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
mono/metadata/profiler.c
mono/metadata/profiler.h
mono/mini/mini-posix.c
mono/profiler/log.c

index 99cbf1430ee3bc9ebb921a948565bbe94b29d74c..e087be07eb604fbfa0dc320637dfec8bd333998c 100644 (file)
@@ -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) \
index eae4fd5751d0f3561928d8de0d95f6ba4d676286..4197bef450d1334482e9bf8596b0c47018cea527 100644 (file)
@@ -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;
index 263f6e6866cc0daa080f413cda4a4e6a4e4769f2..6dd1ea336335a0abcf290c4d67623d7f70ea6718 100644 (file)
@@ -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
index fa77749eab481785047eb74550e29c304e0ad105..8b17287a21a5aa0bd48fc9828176dda9ec1b255b 100644 (file)
@@ -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);
index 3b75deb6146e43fb6627c2fca40a4add9c79ef50..aab2036e6c177ea6d09155cba007b9c111c0874a 100644 (file)
@@ -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);