Disable LLVM for gsharedvt methods.
authorZoltan Varga <vargaz@gmail.com>
Thu, 1 Nov 2012 20:01:18 +0000 (21:01 +0100)
committerZoltan Varga <vargaz@gmail.com>
Sun, 20 Jan 2013 12:02:14 +0000 (13:02 +0100)
mono/mini/mini-llvm.c
mono/mini/mini.c

index ba19a35dc1b6d818cb65888686677d6ef877c633..d1379642decd61924eed8b69ac5b1c44b789df99 100644 (file)
@@ -3370,6 +3370,12 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
                                break;
                        }
 
+                       if (mini_is_gsharedvt_klass (cfg, klass)) {
+                               // FIXME:
+                               LLVM_FAILURE (ctx, "gsharedvt");
+                               break;
+                       }
+
                        switch (ins->opcode) {
                        case OP_STOREV_MEMBASE:
                                if (cfg->gen_write_barriers && klass->has_references && ins->inst_destbasereg != cfg->frame_reg) {
index 349bea7c8b5c03948a055391e08a96730dc41b86..3706759f2e7d65b2fdfbfe6987fdc6ea5b2695d6 100644 (file)
@@ -4568,6 +4568,8 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, gbool
                }
 
                cfg->gsharedvt = TRUE;
+               // FIXME:
+               cfg->disable_llvm = TRUE;
        }
 
        if (cfg->generic_sharing_context) {
@@ -4709,6 +4711,10 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, gbool
 
        if (cfg->verbose_level > 0) {
                char *method_name;
+
+               method_name = mono_method_full_name (method, TRUE);
+               g_print ("converting %s%s%smethod %s\n", COMPILE_LLVM (cfg) ? "llvm " : "", cfg->gsharedvt ? "gsharedvt " : "", (cfg->generic_sharing_context && !cfg->gsharedvt) ? "gshared " : "", method_name);
+               /*
                if (COMPILE_LLVM (cfg))
                        g_print ("converting llvm method %s\n", method_name = mono_method_full_name (method, TRUE));
                else if (cfg->gsharedvt)
@@ -4717,6 +4723,7 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, gbool
                        g_print ("converting shared method %s\n", method_name = mono_method_full_name (method_to_compile, TRUE));
                else
                        g_print ("converting method %s\n", method_name = mono_method_full_name (method, TRUE));
+               */
                g_free (method_name);
        }