From f8c37774bfd338c15d10814c085e80f954650b16 Mon Sep 17 00:00:00 2001 From: monojenkins Date: Thu, 12 Aug 2021 20:30:09 -0400 Subject: [PATCH] [mini] Add GC Unsafe transitions in mono_pmip (#57290) Add a new mono_pmip_u that doesn't do the transition. The intent is that Mono developers in the debugger can call still call mono_pmip_u if the thread state machine is in a broken state. Co-authored-by: lambdageek --- src/mono/mono/mini/mini-runtime.c | 20 ++++++++++++++++++++ src/mono/mono/mini/mini-runtime.h | 1 + 2 files changed, 21 insertions(+) diff --git a/src/mono/mono/mini/mini-runtime.c b/src/mono/mono/mini/mini-runtime.c index d9bfd560f36ae..2ca296b1fd60b 100644 --- a/src/mono/mono/mini/mini-runtime.c +++ b/src/mono/mono/mini/mini-runtime.c @@ -197,9 +197,23 @@ find_tramp (gpointer key, gpointer value, gpointer user_data) ud->method = (MonoMethod*)key; } +static char* +mono_get_method_from_ip_u (void *ip); + /* debug function */ char* mono_get_method_from_ip (void *ip) +{ + char *result; + MONO_ENTER_GC_UNSAFE; + result = mono_get_method_from_ip_u (ip); + MONO_EXIT_GC_UNSAFE; + return result; +} + +/* debug function */ +static char* +mono_get_method_from_ip_u (void *ip) { MonoJitInfo *ji; MonoMethod *method; @@ -272,6 +286,12 @@ mono_pmip (void *ip) return mono_get_method_from_ip (ip); } +G_GNUC_UNUSED char * +mono_pmip_u (void *ip) +{ + return mono_get_method_from_ip_u (ip); +} + /** * mono_print_method_from_ip: * \param ip an instruction pointer address diff --git a/src/mono/mono/mini/mini-runtime.h b/src/mono/mono/mini/mini-runtime.h index 562d98eb5357d..abf2f68b826e1 100644 --- a/src/mono/mono/mini/mini-runtime.h +++ b/src/mono/mono/mini/mini-runtime.h @@ -567,6 +567,7 @@ const char*mono_ji_type_to_string (MonoJumpInfoType type); void mono_print_ji (const MonoJumpInfo *ji); MONO_API void mono_print_method_from_ip (void *ip); MONO_API char *mono_pmip (void *ip); +MONO_API char *mono_pmip_u (void *ip); MONO_API int mono_ee_api_version (void); gboolean mono_debug_count (void);