From a8145ce5707b4d2cbeda8ce0c1e0e90c6431c7c1 Mon Sep 17 00:00:00 2001 From: zoltan Date: Mon, 8 Feb 2010 16:35:52 +0000 Subject: [PATCH] 2010-02-08 Zoltan Varga * mini-exceptions.c (mini_jit_info_table_find): Search the root domain as well, since mono_jit_info_table_find () doesn't do it anymore. * mini-generic-sharing.c debugger-agent.c: Call mini_jit_info_table_find () instead of mono_jit_info_table_find (). git-svn-id: svn+ssh://mono-cvs.ximian.com/source/trunk/mono@151032 e3ebcda4-bce8-0310-ba0a-eca2169e7518 --- mono/mini/ChangeLog | 8 ++++++++ mono/mini/debugger-agent.c | 10 +++++----- mono/mini/mini-exceptions.c | 10 ++++++++++ mono/mini/mini-generic-sharing.c | 2 +- 4 files changed, 24 insertions(+), 6 deletions(-) diff --git a/mono/mini/ChangeLog b/mono/mini/ChangeLog index 24f9b62b5..c9ddd58b6 100755 --- a/mono/mini/ChangeLog +++ b/mono/mini/ChangeLog @@ -1,3 +1,11 @@ +2010-02-08 Zoltan Varga + + * mini-exceptions.c (mini_jit_info_table_find): Search the root domain as well, + since mono_jit_info_table_find () doesn't do it anymore. + + * mini-generic-sharing.c debugger-agent.c: Call mini_jit_info_table_find () + instead of mono_jit_info_table_find (). + 2010-02-07 Zoltan Varga * aot-compiler.c aot-runtime.c: Add support for MONO_WRAPPER_WRITE_BARRIER. diff --git a/mono/mini/debugger-agent.c b/mono/mini/debugger-agent.c index 30db743fd..fb255c2ba 100644 --- a/mono/mini/debugger-agent.c +++ b/mono/mini/debugger-agent.c @@ -1950,7 +1950,7 @@ process_suspend (DebuggerTlsData *tls, MonoContext *ctx) return; } - ji = mono_jit_info_table_find (mono_domain_get (), (char*)ip); + ji = mini_jit_info_table_find (mono_domain_get (), (char*)ip, NULL); /* Can't suspend in these methods */ if (ji->method->klass == mono_defaults.string_class && (!strcmp (ji->method->name, "memset") || strstr (ji->method->name, "memcpy"))) @@ -3229,7 +3229,7 @@ process_breakpoint_inner (DebuggerTlsData *tls, MonoContext *ctx) // FIXME: Speed this up orig_ip = ip = MONO_CONTEXT_GET_IP (ctx); - ji = mono_jit_info_table_find (mono_domain_get (), (char*)ip); + ji = mini_jit_info_table_find (mono_domain_get (), (char*)ip, NULL); g_assert (ji); g_assert (ji->method); @@ -3432,7 +3432,7 @@ process_single_step_inner (DebuggerTlsData *tls, MonoContext *ctx) guint8 *ip; GPtrArray *reqs; int il_offset, suspend_policy; - MonoDomain *domain = mono_domain_get (); + MonoDomain *domain; GSList *events; // FIXME: Speed this up @@ -3457,7 +3457,7 @@ process_single_step_inner (DebuggerTlsData *tls, MonoContext *ctx) if (log_level > 0) { const char *depth = NULL; - ji = mono_jit_info_table_find (mono_domain_get (), (char*)ip); + ji = mini_jit_info_table_find (mono_domain_get (), (char*)ip, &domain); switch (ss_req->depth) { case STEP_DEPTH_OVER: @@ -3494,7 +3494,7 @@ process_single_step_inner (DebuggerTlsData *tls, MonoContext *ctx) ss_req->last_sp = MONO_CONTEXT_GET_SP (ctx); } - ji = mono_jit_info_table_find (mono_domain_get (), (char*)ip); + ji = mini_jit_info_table_find (mono_domain_get (), (char*)ip, &domain); g_assert (ji); g_assert (ji->method); diff --git a/mono/mini/mini-exceptions.c b/mono/mini/mini-exceptions.c index 350068ca9..c0fc62205 100644 --- a/mono/mini/mini-exceptions.c +++ b/mono/mini/mini-exceptions.c @@ -1089,6 +1089,16 @@ mini_jit_info_table_find (MonoDomain *domain, char *addr, MonoDomain **out_domai return ji; } + /* maybe it is shared code, so we also search in the root domain */ + if (domain != mono_get_root_domain ()) { + ji = mono_jit_info_table_find (mono_get_root_domain (), addr); + if (ji) { + if (out_domain) + *out_domain = mono_get_root_domain (); + return ji; + } + } + for (l = t->appdomain_refs; l; l = l->next) { if (l->data != domain) { ji = mono_jit_info_table_find ((MonoDomain*)l->data, addr); diff --git a/mono/mini/mini-generic-sharing.c b/mono/mini/mini-generic-sharing.c index 54c29067a..259e35351 100644 --- a/mono/mini/mini-generic-sharing.c +++ b/mono/mini/mini-generic-sharing.c @@ -23,7 +23,7 @@ MonoGenericSharingContext* mono_get_generic_context_from_code (guint8 *code) { - MonoJitInfo *jit_info = mono_jit_info_table_find (mono_domain_get (), (char*)code); + MonoJitInfo *jit_info = mini_jit_info_table_find (mono_domain_get (), (char*)code, NULL); g_assert (jit_info); -- 2.11.4.GIT