[jit] Move aot method loading to mono_jit_compile_method_with_opt ().
authorZoltan Varga <vargaz@gmail.com>
Sun, 1 Mar 2015 05:47:02 +0000 (00:47 -0500)
committerZoltan Varga <vargaz@gmail.com>
Sun, 1 Mar 2015 05:47:02 +0000 (00:47 -0500)
mono/mini/mini-runtime.c
mono/mini/mini.c

index 9c1719ec8a146da86e1e1378a74493ae2f872a51..cb572175830cf8fe263582301af4ad22dcac0563 100755 (executable)
@@ -1996,7 +1996,7 @@ mono_jit_compile_method_with_opt (MonoMethod *method, guint32 opt, MonoException
 {
        MonoDomain *target_domain, *domain = mono_domain_get ();
        MonoJitInfo *info;
-       gpointer code, p;
+       gpointer code = NULL, p;
        MonoJitInfo *ji;
        MonoJitICallInfo *callinfo = NULL;
        WrapperInfo *winfo = NULL;
@@ -2063,7 +2063,24 @@ mono_jit_compile_method_with_opt (MonoMethod *method, guint32 opt, MonoException
                }
        }
 
-       code = mono_jit_compile_method_inner (method, target_domain, opt, ex);
+#ifdef MONO_USE_AOT_COMPILER
+       if (opt & MONO_OPT_AOT) {
+               MonoDomain *domain = mono_domain_get ();
+
+               mono_class_init (method->klass);
+
+               if ((code = mono_aot_get_method (domain, method))) {
+                       MonoVTable *vtable;
+
+                       vtable = mono_class_vtable (domain, method->klass);
+                       g_assert (vtable);
+                       mono_runtime_class_init (vtable);
+               }
+       }
+#endif
+
+       if (!code)
+               code = mono_jit_compile_method_inner (method, target_domain, opt, ex);
        if (!code)
                return NULL;
 
index c947704bf965144a9de268b3d0d8da17e29b41c7..ec608f23add2ef63024313d7fca278860efbdd16 100755 (executable)
@@ -4048,22 +4048,6 @@ mono_jit_compile_method_inner (MonoMethod *method, MonoDomain *target_domain, in
        GTimer *jit_timer;
        MonoMethod *prof_method, *shared;
 
-#ifdef MONO_USE_AOT_COMPILER
-       if (opt & MONO_OPT_AOT) {
-               MonoDomain *domain = mono_domain_get ();
-
-               mono_class_init (method->klass);
-
-               if ((code = mono_aot_get_method (domain, method))) {
-                       vtable = mono_class_vtable (domain, method->klass);
-                       g_assert (vtable);
-                       mono_runtime_class_init (vtable);
-
-                       return code;
-               }
-       }
-#endif
-
        if ((method->iflags & METHOD_IMPL_ATTRIBUTE_INTERNAL_CALL) ||
            (method->flags & METHOD_ATTRIBUTE_PINVOKE_IMPL)) {
                MonoMethod *nm;