#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"
* Changes which are already detected at runtime, like the addition
* of icalls, do not require an increment.
*/
-#define MONO_CORLIB_VERSION 63
+#define MONO_CORLIB_VERSION 65
typedef struct
{
mono_portability_helpers_init ();
- MONO_GC_PRE_INIT ();
+ mono_gc_base_init ();
mono_monitor_init ();
mono_thread_pool_init ();
mono_marshal_init ();
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) {
}
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);
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