[hybrid] Ensure gsharedvt isn't disabled once it's been enabled
authorLudovic Henry <ludovic@xamarin.com>
Thu, 12 Jan 2017 18:24:06 +0000 (16:24 -0200)
committerLudovic Henry <ludovic@xamarin.com>
Fri, 13 Jan 2017 11:42:59 +0000 (09:42 -0200)
We would observe gsharedvt being disabled on desktop, even after passing --hybrid-aot. This would happen because we would call `mono_set_optimizations` without the `gsharedvt` optimisation enabled, thus calling `mono_set_generic_sharing_vt_supported(FALSE)` disabling again gsharedvt.

mono/mini/mini-generic-sharing.c

index 3c37a4e0e8091ea84c14219d41eb4c8e2acdc010..687249e0939c186124a5fceea4c7f5b6cde75cb6 100644 (file)
@@ -3577,7 +3577,9 @@ static gboolean gsharedvt_supported;
 void
 mono_set_generic_sharing_vt_supported (gboolean supported)
 {
-       gsharedvt_supported = supported;
+       /* ensure we do not disable gsharedvt once it's been enabled */
+       if (!gsharedvt_supported  && supported)
+               gsharedvt_supported = TRUE;
 }
 
 #ifdef MONO_ARCH_GSHAREDVT_SUPPORTED