[mono][aot] Deduplicate runtime invoke wrappers on iOS (#85908)
authorMilos Kotlar <kotlarmilos@gmail.com>
Wed, 24 May 2023 15:55:07 +0000 (17:55 +0200)
committerGitHub <noreply@github.com>
Wed, 24 May 2023 15:55:07 +0000 (17:55 +0200)
* Deduplicate runtime invoke wrappers on iOS

* Move log to the add_extra_method_full

src/mono/mono/mini/aot-compiler.c
src/mono/mono/mini/aot-runtime.c

index 52147fc..33d4e9d 100644 (file)
@@ -4334,6 +4334,9 @@ collect_dedup_method (MonoAotCompile *acfg, MonoMethod *method)
 static int
 add_method_full (MonoAotCompile *acfg, MonoMethod *method, gboolean extra, int depth)
 {
+       if (collect_dedup_method (acfg, method))
+               return -1;
+
        int index;
 
        index = GPOINTER_TO_UINT (g_hash_table_lookup (acfg->method_indexes, method));
@@ -4420,9 +4423,6 @@ add_extra_method_full (MonoAotCompile *acfg, MonoMethod *method, gboolean prefer
                mono_error_assert_ok (error);
        }
 
-       if (collect_dedup_method (acfg, method))
-               return;
-
        if (acfg->aot_opts.log_generics)
                aot_printf (acfg, "%*sAdding method %s.\n", depth, "", mono_method_get_full_name (method));
 
index 261f95b..6da9d27 100644 (file)
@@ -4555,12 +4555,7 @@ mono_aot_can_dedup (MonoMethod *method)
        /* Use a set of wrappers/instances which work and useful */
        switch (method->wrapper_type) {
        case MONO_WRAPPER_RUNTIME_INVOKE:
-#ifdef TARGET_WASM
                return TRUE;
-#else
-               return FALSE;
-#endif
-               break;
        case MONO_WRAPPER_OTHER: {
                WrapperInfo *info = mono_marshal_get_wrapper_info (method);