Mon Oct 13 16:35:26 CEST 2008 Paolo Molaro <lupus@ximian.com>
authorPaolo Molaro <lupus@oddwiz.org>
Mon, 13 Oct 2008 14:38:55 +0000 (14:38 -0000)
committerPaolo Molaro <lupus@oddwiz.org>
Mon, 13 Oct 2008 14:38:55 +0000 (14:38 -0000)
* domain-internals.h, domain.c, icall.c, image.c, marshal.c,
object.c, reflection.c, socket-io.c, threads.c: introduced
mono_framework_version () to return the major framewrok version,
changed the code that was using more complex patterns to use it.
Return the correct value for PlatformID for OSX.

svn path=/trunk/mono/; revision=115656

mono/metadata/ChangeLog
mono/metadata/domain-internals.h
mono/metadata/domain.c
mono/metadata/icall.c
mono/metadata/image.c
mono/metadata/marshal.c
mono/metadata/object.c
mono/metadata/reflection.c
mono/metadata/socket-io.c
mono/metadata/threads.c

index 3260d3e963d3633a7f1760bcc61726f1c695869b..f1e255f3d0c50de5a7848f6824d70856e8fc5b9f 100644 (file)
@@ -1,4 +1,12 @@
 
+Mon Oct 13 16:35:26 CEST 2008 Paolo Molaro <lupus@ximian.com>
+
+       * domain-internals.h, domain.c, icall.c, image.c, marshal.c,
+       object.c, reflection.c, socket-io.c, threads.c: introduced
+       mono_framework_version () to return the major framewrok version,
+       changed the code that was using more complex patterns to use it.
+       Return the correct value for PlatformID for OSX.
+
 Mon Oct 13 14:38:01 CEST 2008 Paolo Molaro <lupus@ximian.com>
 
        * icall-def.h, process.h, process.c: added an icall to get info about
index fe8bdf88bd5e0c23d4a8974836e35e517a791156..82e6cec09eeef56ae966c7c6ced08ae03a72f05e 100644 (file)
@@ -425,4 +425,6 @@ MonoAssembly* mono_assembly_load_full_nosearch (MonoAssemblyName *aname,
                                                MonoImageOpenStatus *status,
                                                gboolean refonly) MONO_INTERNAL;
 
+int mono_framework_version (void) MONO_INTERNAL;
+
 #endif /* __MONO_METADATA_DOMAIN_INTERNALS_H__ */
index 62e09e60fae2b3c349df976c4610b5ad27a09fe6..6255a2f7466fb32ade756e00edab47737a5b6cfc 100644 (file)
@@ -1297,7 +1297,7 @@ mono_init_internal (const char *filename, const char *exe_filename, const char *
        }
        
        /* Now that we have a runtime, set the policy for unhandled exceptions */
-       if (mono_get_runtime_info ()->framework_version [0] < '2') {
+       if (mono_framework_version () < 2) {
                mono_runtime_unhandled_exception_policy_set (MONO_UNHANLED_POLICY_LEGACY);
        }
 
@@ -2394,3 +2394,15 @@ mono_debugger_check_runtime_version (const char *filename)
 
        return NULL;
 }
+
+/**
+ * mono_framework_version:
+ *
+ * Return the major version of the framework curently executing.
+ */
+int
+mono_framework_version (void)
+{
+       return current_runtime->framework_version [0] - '0';
+}
+
index 7d2fdd822c4d09965b34c31b64c6f7056d36a680..51aa9a57594bd130e763e5069be383b70d678b31 100644 (file)
@@ -5092,14 +5092,14 @@ ves_icall_System_Reflection_Assembly_FillName (MonoReflectionAssembly *assembly,
        if (g_path_is_absolute (mass->image->name)) {
                fill_reflection_assembly_name (mono_object_domain (assembly),
                        aname, &mass->aname, mass->image->name, TRUE,
-                       TRUE, mono_get_runtime_info ()->framework_version [0] >= '2');
+                       TRUE, mono_framework_version () >= 2);
                return;
        }
        absolute = g_build_filename (mass->basedir, mass->image->name, NULL);
 
        fill_reflection_assembly_name (mono_object_domain (assembly),
                aname, &mass->aname, absolute, TRUE, TRUE,
-               mono_get_runtime_info ()->framework_version [0] >= '2');
+               mono_framework_version () >= 2);
 
        g_free (absolute);
 }
@@ -5138,8 +5138,8 @@ ves_icall_System_Reflection_Assembly_InternalGetAssemblyName (MonoString *fname,
        }
 
        fill_reflection_assembly_name (mono_domain_get (), aname, &name, filename,
-               TRUE, mono_get_runtime_info ()->framework_version [0] == '1',
-               mono_get_runtime_info ()->framework_version [0] >= '2');
+               TRUE, mono_framework_version () == 1,
+               mono_framework_version () >= 2);
 
        g_free (filename);
        mono_image_close (image);
@@ -6273,14 +6273,19 @@ ves_icall_System_Environment_get_MachineName (void)
 static int
 ves_icall_System_Environment_get_Platform (void)
 {
-       MONO_ARCH_SAVE_REGS;
-
 #if defined (PLATFORM_WIN32)
        /* Win32NT */
        return 2;
+#elif defined(__MACH__)
+       /* OSX */
+       if (mono_framework_version () < 2)
+               return 128;
+       return 6;
 #else
        /* Unix */
-       return 128;
+       if (mono_framework_version () < 2)
+               return 128;
+       return 4;
 #endif
 }
 
index 8fbf110ae78137ac5b4849bf57f6eef912339423..c1770d9ff667c1b01238f38c699324e826e35830 100644 (file)
@@ -460,7 +460,7 @@ mono_image_check_for_module_cctor (MonoImage *image)
        MonoTableInfo *t, *mt;
        t = &image->tables [MONO_TABLE_TYPEDEF];
        mt = &image->tables [MONO_TABLE_METHOD];
-       if (mono_get_runtime_info ()->framework_version [0] == '1') {
+       if (mono_framework_version () == 1) {
                image->checked_module_cctor = TRUE;
                return;
        }
index 58b4c2fbd2f1134cf611bc60fff0845fcc949812..874474794668435c959ba2c3a9048886e053f818 100644 (file)
@@ -2980,7 +2980,7 @@ mono_delegate_end_invoke (MonoDelegate *delegate, gpointer *params)
        if (ares == NULL)
                mono_raise_exception (mono_exception_from_name_msg (mono_defaults.corlib, "System.Runtime.Remoting", "RemotingException", "The async result object is null or of an unexpected type."));
 
-       if (ares->async_delegate != (MonoObject*)delegate && mono_get_runtime_info ()->framework_version [0] >= '2') {
+       if (ares->async_delegate != (MonoObject*)delegate && mono_framework_version () >= 2) {
                mono_raise_exception (mono_get_exception_invalid_operation (
                        "The IAsyncResult object provided does not match this delegate."));
                return NULL;
index 9b44d4acc1eb4e06389c62d97402030c11aa0e4a..8545d407fd35fcc011f2b256cbca043ba353ac56 100644 (file)
@@ -3199,7 +3199,7 @@ mono_unhandled_exception (MonoObject *exc)
                gboolean abort_process = (mono_thread_current () == main_thread) ||
                                (mono_runtime_unhandled_exception_policy_get () == MONO_UNHANLED_POLICY_CURRENT);
                root_appdomain_delegate = *(MonoObject **)(((char *)root_domain->domain) + field->offset);
-               if (current_domain != root_domain && (mono_get_runtime_info ()->framework_version [0] >= '2')) {
+               if (current_domain != root_domain && (mono_framework_version () >= 2)) {
                        current_appdomain_delegate = *(MonoObject **)(((char *)current_domain->domain) + field->offset);
                } else {
                        current_appdomain_delegate = NULL;
@@ -3287,7 +3287,7 @@ mono_runtime_exec_main (MonoMethod *method, MonoArray *args, MonoObject **exc)
        }
        if (has_stathread_attribute) {
                thread->apartment_state = ThreadApartmentState_STA;
-       } else if (mono_get_runtime_info ()->framework_version [0] == '1') {
+       } else if (mono_framework_version () == 1) {
                thread->apartment_state = ThreadApartmentState_Unknown;
        } else {
                thread->apartment_state = ThreadApartmentState_MTA;
index c9d97cda831182f552b90962f8b0073b1130f8e8..78bb2be54357a2aededbaafd1ab34fe78d37a67a 100644 (file)
@@ -3718,7 +3718,7 @@ build_compressed_metadata (MonoDynamicImage *assembly)
        *int32val = GUINT32_TO_LE (0); /* reserved */
        p += 4;
 
-       if (mono_get_runtime_info ()->framework_version [0] > '1') {
+       if (mono_framework_version () > 1) {
                *p++ = 2; /* version */
                *p++ = 0;
        } else {
@@ -5366,7 +5366,7 @@ mono_image_create_pefile (MonoReflectionModuleBuilder *mb, HANDLE file)
        cli_header = (MonoCLIHeader*)(assembly->code.data + assembly->cli_header_offset);
        cli_header->ch_size = GUINT32_FROM_LE (72);
        cli_header->ch_runtime_major = GUINT16_FROM_LE (2);
-       if (mono_get_runtime_info ()->framework_version [0] > '1')
+       if (mono_framework_version () > 1)
                cli_header->ch_runtime_minor = GUINT16_FROM_LE (5);
        else 
                cli_header->ch_runtime_minor = GUINT16_FROM_LE (0);
index 443eef02ddfc43b6199b9493ff25b0926108e86d..225aa585e6b15df6a1062f67ab86c87aee5a3468 100644 (file)
@@ -2845,7 +2845,6 @@ inet_pton (int family, const char *address, void *inaddrp)
 extern MonoBoolean ves_icall_System_Net_Dns_GetHostByAddr_internal(MonoString *addr, MonoString **h_name, MonoArray **h_aliases, MonoArray **h_addr_list)
 {
        char *address;
-       const char *version;
        gboolean v1;
        
 #ifdef AF_INET6
@@ -2861,10 +2860,7 @@ extern MonoBoolean ves_icall_System_Net_Dns_GetHostByAddr_internal(MonoString *a
        gboolean ret;
 #endif
 
-       MONO_ARCH_SAVE_REGS;
-
-       version = mono_get_runtime_info ()->framework_version;
-       v1 = (version[0] == '1');
+       v1 = mono_framework_version () == 1;
 
        address = mono_string_to_utf8 (addr);
 
index 7e8a1e6104cd567ad4c7cb8a4b53931af446b197..9460fd57281498ab2b935db52b4ae9f3e6463a71 100644 (file)
@@ -593,7 +593,7 @@ static guint32 WINAPI start_wrapper(void *data)
 
        /* On 2.0 profile (and higher), set explicitly since state might have been
           Unknown */
-       if (mono_get_runtime_info ()->framework_version [0] != '1') {
+       if (mono_framework_version () != 1) {
                if (thread->apartment_state == ThreadApartmentState_Unknown)
                        thread->apartment_state = ThreadApartmentState_MTA;
        }