In metadata/
authorZoltan Varga <vargaz@gmail.com>
Sat, 16 May 2009 20:16:49 +0000 (20:16 -0000)
committerZoltan Varga <vargaz@gmail.com>
Sat, 16 May 2009 20:16:49 +0000 (20:16 -0000)
2009-05-16  Zoltan Varga  <vargaz@gmail.com>

* class.c (mono_set_generic_sharing_supported): New internal function.
(mono_class_generic_sharing_enabled): Move the #ifdef stuff to the JIT.

In mini/
2009-05-16  Zoltan Varga  <vargaz@gmail.com>

* mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
platform supports it.

svn path=/trunk/mono/; revision=134284

mono/metadata/ChangeLog
mono/metadata/class-internals.h
mono/metadata/class.c
mono/mini/ChangeLog
mono/mini/mini.c

index 4407d55a8c6846f71ce3d8de39249ad91cba33e0..88b87aac6f6e2b849b7a19142747be921b6d6f58 100644 (file)
@@ -1,3 +1,8 @@
+2009-05-16  Zoltan Varga  <vargaz@gmail.com>
+
+       * class.c (mono_set_generic_sharing_supported): New internal function.
+       (mono_class_generic_sharing_enabled): Move the #ifdef stuff to the JIT.
+
 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
 
        * metadata-verify.c: Verify the exported type table.
index d28095460c2ae5bde1c1a638051670366f67b8e5..f537354ab1e3fc0f6bacf9c7ea2e93ebf862df76 100644 (file)
@@ -1127,6 +1127,9 @@ mono_class_get_method_generic (MonoClass *klass, MonoMethod *method) MONO_INTERN
 MonoType*
 mono_type_get_basic_type_from_generic (MonoType *type) MONO_INTERNAL;
 
+void
+mono_set_generic_sharing_supported (gboolean supported) MONO_INTERNAL;
+
 gboolean
 mono_class_generic_sharing_enabled (MonoClass *class) MONO_INTERNAL;
 
index 9e6ba5dd61668b607c2a89f22b13f155149f5c26..1e4867d826c319003201614ea3bd89d374322101 100644 (file)
@@ -7815,6 +7815,14 @@ mono_generic_class_is_generic_type_definition (MonoGenericClass *gklass)
        return gklass->context.class_inst == gklass->container_class->generic_container->context.class_inst;
 }
 
+static gboolean gshared_supported;
+
+void
+mono_set_generic_sharing_supported (gboolean supported)
+{
+       gshared_supported = supported;
+}
+
 /*
  * mono_class_generic_sharing_enabled:
  * @class: a class
@@ -7828,19 +7836,13 @@ mono_generic_class_is_generic_type_definition (MonoGenericClass *gklass)
 gboolean
 mono_class_generic_sharing_enabled (MonoClass *class)
 {
-#if defined(__i386__) || defined(__x86_64__) || defined(__arm__) || defined(__mono_ppc__)
-       static gboolean supported = TRUE;
-#else
-       /* Not supported by the JIT backends */
-       static gboolean supported = FALSE;
-#endif
        static int generic_sharing = MONO_GENERIC_SHARING_NONE;
        static gboolean inited = FALSE;
 
        if (!inited) {
                const char *option;
 
-               if (supported)
+               if (gshared_supported)
                        generic_sharing = MONO_GENERIC_SHARING_ALL;
                else
                        generic_sharing = MONO_GENERIC_SHARING_NONE;
@@ -7858,7 +7860,7 @@ mono_class_generic_sharing_enabled (MonoClass *class)
                                g_warning ("Unknown generic sharing option `%s'.", option);
                }
 
-               if (!supported)
+               if (!gshared_supported)
                        generic_sharing = MONO_GENERIC_SHARING_NONE;
 
                inited = TRUE;
index 3b3730dda743369d8762e3355952191b3597b8be..376036182416e40310d510cb760bc8deaaf4c968 100644 (file)
@@ -1,3 +1,8 @@
+2009-05-16  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
+       platform supports it.
+
 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
 
        * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
index 831acf15ffaba15de6122bd90c8f34a6104b98ec..380a7aa8ab4a7d1afa8d3c40e69f8fc45af8212e 100644 (file)
@@ -4748,6 +4748,10 @@ mini_init (const char *filename, const char *runtime_version)
        if (default_opt & MONO_OPT_AOT)
                mono_aot_init ();
 
+#if defined(__i386__) || defined(__x86_64__) || defined(__arm__) || defined(__mono_ppc__)
+       mono_set_generic_sharing_supported (TRUE);
+#endif
+
        mono_runtime_install_handlers ();
        mono_threads_install_cleanup (mini_thread_cleanup);