X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmini%2Fdriver.c;h=7d0716dad90c909c3d68fd2f59b0f2af827ad276;hb=8784e2e1cbbd88b4872536d3a8077702dc547216;hp=e31628dc795b53151c8028fd03e04d7386e705c8;hpb=38f607b059ac2622828dfad1d607e09c213cc613;p=mono.git diff --git a/mono/mini/driver.c b/mono/mini/driver.c index e31628dc795..7d0716dad90 100644 --- a/mono/mini/driver.c +++ b/mono/mini/driver.c @@ -49,10 +49,11 @@ #include #include #include +#include #include "mono/utils/mono-counters.h" #include "mono/utils/mono-hwcap.h" #include "mono/utils/mono-logger-internals.h" -#include "mono/utils/w32handle.h" +#include "mono/metadata/w32handle.h" #include "mini.h" #include "jit.h" @@ -934,7 +935,7 @@ compile_all_methods_thread_main_inner (CompileAllThreadArgs *args) (method->flags & METHOD_ATTRIBUTE_ABSTRACT)) continue; - if (method->klass->generic_container) + if (mono_class_is_gtd (method->klass)) continue; sig = mono_method_signature (method); if (!sig) { @@ -1274,6 +1275,7 @@ mini_usage (void) #ifdef HOST_WIN32 " --mixed-mode Enable mixed-mode image support.\n" #endif + " --handlers Install custom handlers, use --help-handlers for details.\n" ); } @@ -1556,6 +1558,10 @@ switch_arch (char* argv[], const char* target_arch) } #endif + +#define MONO_HANDLERS_ARGUMENT "--handlers=" +#define MONO_HANDLERS_ARGUMENT_LEN G_N_ELEMENTS(MONO_HANDLERS_ARGUMENT)-1 + /** * mono_main: * @argc: number of arguments in the argv array @@ -1753,11 +1759,11 @@ mono_main (int argc, char* argv[]) } else if (strcmp (argv [i], "--verify-all") == 0) { mono_verifier_enable_verify_all (); } else if (strcmp (argv [i], "--full-aot") == 0) { - mono_aot_only = TRUE; + mono_jit_set_aot_mode (MONO_AOT_MODE_FULL); } else if (strcmp (argv [i], "--llvmonly") == 0) { - mono_aot_only = TRUE; - mono_llvm_only = TRUE; + mono_jit_set_aot_mode (MONO_AOT_MODE_LLVMONLY); } else if (strcmp (argv [i], "--hybrid-aot") == 0) { + mono_jit_set_aot_mode (MONO_AOT_MODE_HYBRID); } else if (strcmp (argv [i], "--print-vtable") == 0) { mono_print_vtable = TRUE; } else if (strcmp (argv [i], "--stats") == 0) { @@ -1908,6 +1914,15 @@ mono_main (int argc, char* argv[]) } else if (strcmp (argv [i], "--nacl-null-checks-off") == 0){ nacl_null_checks_off = TRUE; #endif + } else if (strncmp (argv [i], MONO_HANDLERS_ARGUMENT, MONO_HANDLERS_ARGUMENT_LEN) == 0) { + //Install specific custom handlers. + if (!mono_runtime_install_custom_handlers (argv[i] + MONO_HANDLERS_ARGUMENT_LEN)) { + fprintf (stderr, "error: " MONO_HANDLERS_ARGUMENT ", one or more unknown handlers: '%s'\n", argv [i]); + return 1; + } + } else if (strcmp (argv [i], "--help-handlers") == 0) { + mono_runtime_install_custom_handlers_usage (); + return 0; } else if (argv [i][0] == '-' && argv [i][1] == '-' && mini_parse_debug_option (argv [i] + 2)) { } else { fprintf (stderr, "Unknown command line option: '%s'\n", argv [i]); @@ -1942,9 +1957,9 @@ mono_main (int argc, char* argv[]) { char *runtime_path; - runtime_path = wapi_process_get_path (getpid ()); + runtime_path = mono_w32process_get_path (getpid ()); if (runtime_path) { - wapi_process_set_cli_launcher (runtime_path); + mono_w32process_set_cli_launcher (runtime_path); g_free (runtime_path); } } @@ -1980,12 +1995,6 @@ mono_main (int argc, char* argv[]) /* Set rootdir before loading config */ mono_set_rootdir (); - /* - * We only set the native name of the thread since MS.NET leaves the - * managed thread name for the main thread as null. - */ - mono_native_thread_set_name (mono_native_thread_id_get (), "Main"); - if (enable_profile) { mono_profiler_load (profile_options); mono_profiler_thread_name (MONO_NATIVE_THREAD_ID_TO_UINT (mono_native_thread_id_get ()), "Main"); @@ -2312,11 +2321,21 @@ mono_jit_set_aot_only (gboolean val) void mono_jit_set_aot_mode (MonoAotMode mode) { + /* we don't want to set mono_aot_mode twice */ + g_assert (mono_aot_mode == MONO_AOT_MODE_NONE); mono_aot_mode = mode; + if (mono_aot_mode == MONO_AOT_MODE_LLVMONLY) { mono_aot_only = TRUE; mono_llvm_only = TRUE; } + if (mono_aot_mode == MONO_AOT_MODE_FULL) { + mono_aot_only = TRUE; + } + if (mono_aot_mode == MONO_AOT_MODE_HYBRID) { + mono_set_generic_sharing_vt_supported (TRUE); + mono_set_partial_sharing_supported (TRUE); + } } /**