make GC/GCHandle tracing pay-for-play (#21479)
authorSung Yoon Whang <suwhang@microsoft.com>
Tue, 11 Dec 2018 06:49:18 +0000 (22:49 -0800)
committerGitHub <noreply@github.com>
Tue, 11 Dec 2018 06:49:18 +0000 (22:49 -0800)
src/gc/gceventstatus.h

index 5482fb51a62aa93c0acd0a445fc54aa24a9582d7..c49e767171a3f2e436bec48ed212d9c6d9effb70 100644 (file)
@@ -241,9 +241,12 @@ void FireDynamicEvent(const char* name, EventArgument... arguments)
   template<typename... EventActualArgument>                       \
   inline void GCEventFire##name(EventActualArgument... arguments) \
   {                                                               \
-      IGCToCLREventSink* sink = GCToEEInterface::EventSink();     \
-      assert(sink != nullptr);                                    \
-      sink->Fire##name(arguments...);                             \
+      if (GCEventEnabled##name())                                 \
+      {                                                           \
+          IGCToCLREventSink* sink = GCToEEInterface::EventSink(); \
+          assert(sink != nullptr);                                \
+          sink->Fire##name(arguments...);                         \
+      }                                                           \
   }
 
 #define DYNAMIC_EVENT(name, level, keyword, ...)                                                                   \