[Pkg-mono-svn-commits] [SCM] mono branch, master-experimental, updated. debian/3.0.6+dfsg2-4-10-g319a186
Mirco Bauer
meebey at meebey.net
Sun Jun 16 21:32:59 UTC 2013
The following commit has been merged in the master-experimental branch:
commit 172471f34ead028db9a0ac3e59392c2a35852093
Author: Alex Rønne Petersen <alexrp at xamarin.com>
Date: Mon Apr 22 18:00:37 2013 +0200
Support a MONO_ARCH_HAVE_TLS_INIT variable.
Setting this on an architecture makes Mini call
mono_arch_tls_init () on thread attach.
This is primarily useful for architectures that have not
had their LMF code ported to the new infrastructure due to
a general lack of maintenance or hardware to do it on.
(cherry picked from commit f87a4f127d1a0ea1cf4145f9605c5698af08c6cf)
diff --git a/mono/mini/mini-sparc.c b/mono/mini/mini-sparc.c
index 12150ca..2300f39 100644
--- a/mono/mini/mini-sparc.c
+++ b/mono/mini/mini-sparc.c
@@ -4361,8 +4361,10 @@ mono_arch_get_lmf_addr (void)
#endif
void
-mono_arch_finish_init (void)
+mono_arch_tls_init (void)
{
+ MonoJitTlsData *jit_tls;
+
if (!lmf_addr_key_inited) {
int res;
@@ -4377,14 +4379,21 @@ mono_arch_finish_init (void)
}
+ jit_tls = pthread_getspecific (mono_get_jit_tls_key ());
+
#ifdef MONO_SPARC_THR_TLS
- thr_setspecific (lmf_addr_key, &tls->lmf);
+ thr_setspecific (lmf_addr_key, &jit_tls->lmf);
#else
- pthread_setspecific (lmf_addr_key, &tls->lmf);
+ pthread_setspecific (lmf_addr_key, &jit_tls->lmf);
#endif
}
void
+mono_arch_finish_init (void)
+{
+}
+
+void
mono_arch_free_jit_tls_data (MonoJitTlsData *tls)
{
}
diff --git a/mono/mini/mini-sparc.h b/mono/mini/mini-sparc.h
index b654571..f2b3b41 100644
--- a/mono/mini/mini-sparc.h
+++ b/mono/mini/mini-sparc.h
@@ -105,6 +105,9 @@ typedef struct MonoCompileArch {
#define MONO_ARCH_HAVE_IMT 1
#define MONO_ARCH_IMT_REG sparc_g1
#define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS 1
+#define MONO_ARCH_HAVE_TLS_INIT 1
+
+void mono_arch_tls_init (void);
#ifdef SPARCV9
#define MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS
diff --git a/mono/mini/mini.c b/mono/mini/mini.c
index 12752a0..26cc4f0 100644
--- a/mono/mini/mini.c
+++ b/mono/mini/mini.c
@@ -2730,6 +2730,10 @@ setup_jit_tls_data (gpointer stack_start, gpointer abort_func)
jit_tls->lmf = lmf;
#endif
+#ifdef MONO_ARCH_HAVE_TLS_INIT
+ mono_arch_tls_init ();
+#endif
+
mono_setup_altstack (jit_tls);
return jit_tls;
@@ -6851,9 +6855,9 @@ mini_init (const char *filename, const char *runtime_version)
mono_install_imt_thunk_builder (mono_arch_build_imt_thunk);
}
#endif
+
/*Init arch tls information only after the metadata side is inited to make sure we see dynamic appdomain tls keys*/
mono_arch_finish_init ();
-
/* This must come after mono_init () in the aot-only case */
mono_exceptions_init ();
--
mono
More information about the Pkg-mono-svn-commits
mailing list