From f1e68da190db4ef7be7dd4c17537c15c2bdc7602 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Sat, 8 Jul 2017 06:41:38 +0200 Subject: [PATCH] [profiler] Hide the GC roots callback behind a macro and mark it obsolete. --- mono/metadata/loader.c | 1 - mono/metadata/profiler-events.h | 13 ++++++++++++- mono/metadata/profiler-private.h | 1 + mono/metadata/profiler.h | 2 ++ mono/metadata/string-icalls.c | 2 -- mono/mini/driver.c | 1 - mono/mini/mini-darwin.c | 1 - mono/mini/mini-exceptions.c | 2 +- mono/mini/mini-posix.c | 1 - mono/mini/mini-runtime.c | 1 - mono/mini/mini-windows.c | 1 - mono/mini/mini.c | 1 - mono/profiler/log.h | 1 + 13 files changed, 17 insertions(+), 11 deletions(-) diff --git a/mono/metadata/loader.c b/mono/metadata/loader.c index 56c3572e76e..e685ac227ab 100644 --- a/mono/metadata/loader.c +++ b/mono/metadata/loader.c @@ -35,7 +35,6 @@ #include #include #include -#include #include #include #include diff --git a/mono/metadata/profiler-events.h b/mono/metadata/profiler-events.h index 01902b0bb0c..7b85f00fb0c 100644 --- a/mono/metadata/profiler-events.h +++ b/mono/metadata/profiler-events.h @@ -70,12 +70,23 @@ MONO_PROFILER_EVENT_2(gc_moves, GCMoves, MonoObject *const *, objects, uint64_t, MONO_PROFILER_EVENT_1(gc_resize, GCResize, uintptr_t, size) MONO_PROFILER_EVENT_3(gc_handle_created, GCHandleCreated, uint32_t, handle, MonoGCHandleType, type, MonoObject *, object) MONO_PROFILER_EVENT_2(gc_handle_deleted, GCHandleDeleted, uint32_t, handle, MonoGCHandleType, type) -MONO_PROFILER_EVENT_4(gc_roots, GCRoots, MonoObject *const *, roots, const MonoProfilerGCRootType *, types, const uintptr_t *, extra, uint64_t, count) MONO_PROFILER_EVENT_0(gc_finalizing, GCFinalizing) MONO_PROFILER_EVENT_0(gc_finalized, GCFinalized) MONO_PROFILER_EVENT_1(gc_finalizing_object, GCFinalizingObject, MonoObject *, object) MONO_PROFILER_EVENT_1(gc_finalized_object, GCFinalizedObject, MonoObject *, object) +/* + * This callback provides very low quality data and doesn't really match how + * roots are actually handled in the runtime. It will be replaced with a more + * sensible callback in the future. **This will be a breaking change.** + * + * In the meantime, you must define MONO_PROFILER_UNSTABLE_GC_ROOTS to be able + * to use this interface. + */ +#ifdef MONO_PROFILER_UNSTABLE_GC_ROOTS +MONO_PROFILER_EVENT_4(gc_roots, GCRoots, MonoObject *const *, roots, const MonoProfilerGCRootType *, types, const uintptr_t *, extra, uint64_t, count) +#endif + MONO_PROFILER_EVENT_1(monitor_contention, MonitorContention, MonoObject *, object) MONO_PROFILER_EVENT_1(monitor_failed, MonitorFailed, MonoObject *, object) MONO_PROFILER_EVENT_1(monitor_acquired, MonitorAcquired, MonoObject *, object) diff --git a/mono/metadata/profiler-private.h b/mono/metadata/profiler-private.h index 4d1b93d4a95..45535bcf3d8 100644 --- a/mono/metadata/profiler-private.h +++ b/mono/metadata/profiler-private.h @@ -7,6 +7,7 @@ #ifndef __MONO_PROFILER_PRIVATE_H__ #define __MONO_PROFILER_PRIVATE_H__ +#define MONO_PROFILER_UNSTABLE_GC_ROOTS #include #include #include diff --git a/mono/metadata/profiler.h b/mono/metadata/profiler.h index 2d5935e6fdd..31fa4a767d4 100644 --- a/mono/metadata/profiler.h +++ b/mono/metadata/profiler.h @@ -196,6 +196,7 @@ typedef MonoProfilerCallInstrumentationFlags (*MonoProfilerCallInstrumentationFi */ MONO_API void mono_profiler_set_call_instrumentation_filter_callback (MonoProfilerHandle handle, MonoProfilerCallInstrumentationFilterCallback cb); +#ifdef MONO_PROFILER_UNSTABLE_GC_ROOTS typedef enum { /* Upper 2 bytes. */ MONO_PROFILER_GC_ROOT_PINNING = 1 << 8, @@ -211,6 +212,7 @@ typedef enum { MONO_PROFILER_GC_ROOT_TYPEMASK = 0xff, } MonoProfilerGCRootType; +#endif typedef enum { /* data = MonoMethod *method */ diff --git a/mono/metadata/string-icalls.c b/mono/metadata/string-icalls.c index 8556a498940..e6cbc3dbfea 100644 --- a/mono/metadata/string-icalls.c +++ b/mono/metadata/string-icalls.c @@ -23,8 +23,6 @@ #include #include #include -#include -#include #include /* This function is redirected to String.CreateString () diff --git a/mono/mini/driver.c b/mono/mini/driver.c index 934eb0a54a3..750aa206b99 100644 --- a/mono/mini/driver.c +++ b/mono/mini/driver.c @@ -36,7 +36,6 @@ #include #include #include -#include "mono/metadata/profiler.h" #include #include #include diff --git a/mono/mini/mini-darwin.c b/mono/mini/mini-darwin.c index 75e0a8800fb..73be22c7c6e 100644 --- a/mono/mini/mini-darwin.c +++ b/mono/mini/mini-darwin.c @@ -34,7 +34,6 @@ #include #include #include -#include "mono/metadata/profiler.h" #include #include #include diff --git a/mono/mini/mini-exceptions.c b/mono/mini/mini-exceptions.c index bd4283bf3f8..c8e6b75b496 100644 --- a/mono/mini/mini-exceptions.c +++ b/mono/mini/mini-exceptions.c @@ -60,7 +60,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/mono/mini/mini-posix.c b/mono/mini/mini-posix.c index a3fd4f0e298..40a841b729f 100644 --- a/mono/mini/mini-posix.c +++ b/mono/mini/mini-posix.c @@ -40,7 +40,6 @@ #include #include #include -#include "mono/metadata/profiler.h" #include #include #include diff --git a/mono/mini/mini-runtime.c b/mono/mini/mini-runtime.c index 5bd78513c85..8e385be0afc 100644 --- a/mono/mini/mini-runtime.c +++ b/mono/mini/mini-runtime.c @@ -39,7 +39,6 @@ #include #include #include -#include "mono/metadata/profiler.h" #include #include #include diff --git a/mono/mini/mini-windows.c b/mono/mini/mini-windows.c index 3852baf81f1..efb4739cde2 100644 --- a/mono/mini/mini-windows.c +++ b/mono/mini/mini-windows.c @@ -27,7 +27,6 @@ #include #include #include -#include "mono/metadata/profiler.h" #include #include #include diff --git a/mono/mini/mini.c b/mono/mini/mini.c index d058547fc41..9948d16c145 100644 --- a/mono/mini/mini.c +++ b/mono/mini/mini.c @@ -36,7 +36,6 @@ #include #include #include -#include "mono/metadata/profiler.h" #include #include #include diff --git a/mono/profiler/log.h b/mono/profiler/log.h index e285f18e618..2f14b018a42 100644 --- a/mono/profiler/log.h +++ b/mono/profiler/log.h @@ -2,6 +2,7 @@ #define __MONO_PROFLOG_H__ #include +#define MONO_PROFILER_UNSTABLE_GC_ROOTS #include #define BUF_ID 0x4D504C01 -- 2.25.1