[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