[jit] Disable llvm for overly complex methods, to avoid compilation slowdowns. Fixes...
authorZoltan Varga <vargaz@gmail.com>
Mon, 13 Feb 2017 19:35:41 +0000 (14:35 -0500)
committerZoltan Varga <vargaz@gmail.com>
Mon, 13 Feb 2017 19:35:51 +0000 (14:35 -0500)
mono/mini/mini.c

index c1e01d7c0bbf1e8fc065b20584e4ecd4568d6458..35d0eadf8be064d959bd344dbf391e162a994e2c 100644 (file)
@@ -3604,6 +3604,10 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, JitFl
                cfg->disable_ssa = TRUE;
        }
 
+       if (cfg->num_varinfo > 10000 && !cfg->llvm_only)
+               /* Disable llvm for overly complex methods */
+               cfg->disable_ssa = TRUE;
+
        if (cfg->opt & MONO_OPT_LOOP) {
                MONO_TIME_TRACK (mono_jit_stats.jit_compile_dominator_info, mono_compile_dominator_info (cfg, MONO_COMP_DOM | MONO_COMP_IDOM));
                MONO_TIME_TRACK (mono_jit_stats.jit_compute_natural_loops, mono_compute_natural_loops (cfg));