* icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
[mono.git] / mono / metadata / appdomain.c
index 85ed57331249cf28b68dd6afd3a6479714a0d853..e817ca710e1288ba0126c148aa104ad139c50f98 100644 (file)
@@ -19,8 +19,7 @@
 #include <sys/stat.h>
 #include <sys/types.h>
 
-#include <mono/os/gc_wrapper.h>
-
+#include <mono/metadata/gc-internal.h>
 #include <mono/metadata/object.h>
 #include <mono/metadata/domain-internals.h>
 #include "mono/metadata/metadata-internals.h"
@@ -55,7 +54,7 @@
  * Changes which are already detected at runtime, like the addition
  * of icalls, do not require an increment.
  */
-#define MONO_CORLIB_VERSION 64
+#define MONO_CORLIB_VERSION 65
 
 typedef struct
 {
@@ -629,6 +628,8 @@ ves_icall_System_AppDomain_createDomain (MonoString *friendly_name, MonoAppDomai
        data->domain = ad;
        data->setup = setup;
        data->friendly_name = mono_string_to_utf8 (friendly_name);
+       // FIXME: The ctor runs in the current domain
+       // FIXME: Initialize null_reference_ex and stack_overflow_ex
        data->out_of_memory_ex = mono_exception_from_name_domain (data, mono_defaults.corlib, "System", "OutOfMemoryException");
 
        if (!setup->application_base) {
@@ -1456,26 +1457,17 @@ ves_icall_System_AppDomain_InternalIsFinalizingForUnload (gint32 domain_id)
 }
 
 gint32
-ves_icall_System_AppDomain_ExecuteAssembly (MonoAppDomain *ad, MonoString *file, 
-                                           MonoObject *evidence, MonoArray *args)
+ves_icall_System_AppDomain_ExecuteAssembly (MonoAppDomain *ad, 
+                                                                                       MonoReflectionAssembly *refass, MonoArray *args)
 {
-       MonoAssembly *assembly;
        MonoImage *image;
        MonoMethod *method;
-       char *filename;
-       gint32 res;
-       MonoReflectionAssembly *refass;
 
        MONO_ARCH_SAVE_REGS;
 
-       filename = mono_string_to_utf8 (file);
-       assembly = mono_assembly_open (filename, NULL);
-       g_free (filename);
-
-       if (!assembly)
-               mono_raise_exception (mono_get_exception_file_not_found2 (NULL, file));
-
-       image = assembly->image;
+       g_assert (refass);
+       image = refass->assembly->image;
+       g_assert (image);
 
        method = mono_get_method (image, mono_image_get_entry_point (image), NULL);
 
@@ -1485,12 +1477,7 @@ ves_icall_System_AppDomain_ExecuteAssembly (MonoAppDomain *ad, MonoString *file,
        if (!args)
                args = (MonoArray *) mono_array_new (ad->data, mono_defaults.string_class, 0);
 
-       refass = mono_assembly_get_object (ad->data, assembly);
-       MONO_OBJECT_SETREF (refass, evidence, evidence);
-
-       res = mono_runtime_exec_main (method, (MonoArray *)args, NULL);
-
-       return res;
+       return mono_runtime_exec_main (method, (MonoArray *)args, NULL);
 }
 
 gint32