[llvm] Enable support for Selector.GetHandle (). Enable it for Xamarin.Mac as well.
authorZoltan Varga <vargaz@gmail.com>
Wed, 15 Jun 2016 21:54:31 +0000 (17:54 -0400)
committerZoltan Varga <vargaz@gmail.com>
Wed, 15 Jun 2016 21:54:36 +0000 (17:54 -0400)
mono/mini/method-to-ir.c

index 382bd377664760dc314bfa7cf908401031d89225..7df45ee2556f8ea504cc06ddbe7435fbaa49df3e 100644 (file)
@@ -6780,23 +6780,19 @@ mini_emit_inst_for_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSign
                    !strcmp (cmethod->klass->image->assembly->aname.name, "monotouch")) &&
                                !strcmp (cmethod->klass->name_space, "XamCore.ObjCRuntime") &&
                                !strcmp (cmethod->klass->name, "Selector")) ||
-                          (!strcmp (cmethod->klass->image->assembly->aname.name, "Xamarin.iOS") &&
+                          ((!strcmp (cmethod->klass->image->assembly->aname.name, "Xamarin.iOS") ||
+                                !strcmp (cmethod->klass->image->assembly->aname.name, "Xamarin.Mac")) &&
                                !strcmp (cmethod->klass->name_space, "ObjCRuntime") &&
                                !strcmp (cmethod->klass->name, "Selector"))
                           ) {
-               if (cfg->backend->have_objc_get_selector &&
+               if ((cfg->backend->have_objc_get_selector || cfg->compile_llvm) &&
                        !strcmp (cmethod->name, "GetHandle") && fsig->param_count == 1 &&
                    (args [0]->opcode == OP_GOT_ENTRY || args [0]->opcode == OP_AOTCONST) &&
-                   cfg->compile_aot && !cfg->llvm_only) {
+                   cfg->compile_aot) {
                        MonoInst *pi;
                        MonoJumpInfoToken *ji;
                        char *s;
 
-                       // FIXME: llvmonly
-
-                       cfg->exception_message = g_strdup ("GetHandle");
-                       cfg->disable_llvm = TRUE;
-
                        if (args [0]->opcode == OP_GOT_ENTRY) {
                                pi = (MonoInst *)args [0]->inst_p1;
                                g_assert (pi->opcode == OP_PATCH_INFO);