Parcourir la source

Add mono log profiler support

Carter Anderson il y a 6 ans
Parent
commit
839ed2d092
1 fichiers modifiés avec 11 ajouts et 0 suppressions
  1. 11 0
      modules/mono/mono_gd/gd_mono.cpp

+ 11 - 0
modules/mono/mono_gd/gd_mono.cpp

@@ -34,6 +34,7 @@
 #include <mono/metadata/mono-config.h>
 #include <mono/metadata/mono-debug.h>
 #include <mono/metadata/mono-gc.h>
+#include <mono/metadata/profiler.h>
 
 #include "core/os/dir_access.h"
 #include "core/os/file_access.h"
@@ -79,6 +80,14 @@ void setup_runtime_main_args() {
 	mono_runtime_set_main_args(main_args.size(), main_args.ptrw());
 }
 
+void gdmono_profiler_init() {
+	String profiler_args = GLOBAL_DEF("mono/profiler/args", "log:calls,alloc,sample,output=output.mlpd");
+	bool profiler_enabled = GLOBAL_DEF("mono/profiler/enabled", false);
+	if (profiler_enabled) {
+		mono_profiler_load(profiler_args.utf8());
+	}
+}
+
 #ifdef DEBUG_ENABLED
 
 static bool _wait_for_debugger_msecs(uint32_t p_msecs) {
@@ -265,6 +274,8 @@ void GDMono::initialize() {
 
 	GDMonoAssembly::initialize();
 
+	gdmono_profiler_init();
+
 #ifdef DEBUG_ENABLED
 	gdmono_debug_init();
 #endif