+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.
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;
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
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;
g_warning ("Unknown generic sharing option `%s'.", option);
}
- if (!supported)
+ if (!gshared_supported)
generic_sharing = MONO_GENERIC_SHARING_NONE;
inited = TRUE;
+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.
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);