[llvmonly] Share more gsharedvt wrappers.
authorZoltan Varga <vargaz@gmail.com>
Sat, 19 Dec 2015 23:29:41 +0000 (18:29 -0500)
committerZoltan Varga <vargaz@gmail.com>
Sat, 19 Dec 2015 23:29:41 +0000 (18:29 -0500)
mono/mini/aot-compiler.c
mono/mini/mini-generic-sharing.c

index 88f095c18434167775a668e544c0db37573d902c..32ef985f00026a33621c55d1483ff56e96408044 100644 (file)
@@ -7212,8 +7212,6 @@ compile_method (MonoAotCompile *acfg, MonoMethod *method)
                /* These only need out wrappers */
                add_gsharedvt_wrappers (acfg, mono_method_signature (cfg->method), FALSE, TRUE);
 
-       //cfg->signatures = g_slist_prepend_mempool (cfg->mempool, cfg->signatures, mono_method_signature (cfg->method));
-
        /* Add gsharedvt wrappers for signatures used by the method */
        if (acfg->aot_opts.llvm_only && (acfg->opts & MONO_OPT_GSHAREDVT)) {
                GSList *l;
index faaaeee005011d7b1cd0adb14d635d38ba92ff6e..011b3c708039067b20efae139f5d5d24da527581 100644 (file)
@@ -1041,16 +1041,22 @@ get_wrapper_shared_type (MonoType *t)
                return &mono_defaults.int_class->this_arg;
        t = mini_get_underlying_type (t);
 
-       // FIXME: Merge more types (objref/int etc).
-
        switch (t->type) {
+       case MONO_TYPE_OBJECT:
        case MONO_TYPE_CLASS:
        case MONO_TYPE_SZARRAY:
        case MONO_TYPE_ARRAY:
-               return &mono_defaults.object_class->byval_arg;
+       case MONO_TYPE_PTR:
+               return &mono_defaults.int_class->byval_arg;
+               return &mono_defaults.int_class->byval_arg;
        case MONO_TYPE_GENERICINST:
                if (!MONO_TYPE_ISSTRUCT (t))
-                       return &mono_defaults.object_class->byval_arg;
+                       return &mono_defaults.int_class->byval_arg;
+               break;
+#if SIZEOF_VOID_P == 8
+       case MONO_TYPE_I8:
+               return &mono_defaults.int_class->byval_arg;
+#endif
        default:
                break;
        }