Thu Jul 3 17:22:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
authorPaolo Molaro <lupus@oddwiz.org>
Thu, 3 Jul 2003 15:33:59 +0000 (15:33 -0000)
committerPaolo Molaro <lupus@oddwiz.org>
Thu, 3 Jul 2003 15:33:59 +0000 (15:33 -0000)
* object.c, file-io.c, metadata.c, mono-endian.h, reflection.c,
rawbuffer.c: more 64 bit and picky (or old) compiler fixes from
Bernie Solomon <bernard@ugsolutions.com>.

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

mono/metadata/ChangeLog
mono/metadata/file-io.c
mono/metadata/metadata.c
mono/metadata/mono-endian.h
mono/metadata/object.c
mono/metadata/rawbuffer.c
mono/metadata/reflection.c

index 9cffe6aeffa93786fe108ec0b3035e1da6cd5c1c..ffb985eada52692163cde7dfbc0c20b6f66bc3c0 100644 (file)
@@ -1,4 +1,10 @@
 
+Thu Jul 3 17:22:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
+
+       * object.c, file-io.c, metadata.c, mono-endian.h, reflection.c,
+       rawbuffer.c: more 64 bit and picky (or old) compiler fixes from
+       Bernie Solomon <bernard@ugsolutions.com>.
+
 Thu Jul 3 17:17:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
 
        * object.c, object.h: provide mono_object_new_fast() for faster
index 98941d2b0707c64969a0f35cd84907f67092d30a..b41a23929ef26a1bc1670f44b38cc3a212600591 100644 (file)
@@ -154,10 +154,10 @@ static guint32 convert_seekorigin(MonoSeekOrigin origin)
 
 static gint64 convert_filetime (const FILETIME *filetime)
 {
-       gint64 *ticks;
-
-       ticks = (gint64 *)filetime;
-       return *ticks;
+       guint64 ticks = filetime->dwHighDateTime;
+       ticks <<= 32;
+       ticks += filetime->dwLowDateTime;
+       return (gint64)ticks;
 }
 
 static void convert_win32_file_attribute_data (const WIN32_FILE_ATTRIBUTE_DATA *data, const gunichar2 *name, MonoIOStat *stat)
index d5cdbc2615870fa3218761da0d033a5e0405a7e9..b83ce9b45469d9686ed39898377d6ac4609eb9d0 100644 (file)
@@ -845,7 +845,11 @@ mono_metadata_guid_heap (MonoImage *meta, guint32 index)
 static const char *
 dword_align (const char *ptr)
 {
+#if SIZEOF_VOID_P == 8
+       return (const char *) (((guint64) (ptr + 3)) & ~3);
+#else
        return (const char *) (((guint32) (ptr + 3)) & ~3);
+#endif
 }
 
 /**
index b4e79864d7e612633c1ce6c84693cd7b0de1a182..344734a7fcb3d69b0fa7354e46895fcb032951de 100644 (file)
@@ -20,9 +20,9 @@ guint32 mono_read32 (const unsigned char *x);
 guint64 mono_read64 (const unsigned char *x);
 guint64 mono_read64_swap_words (const unsigned char *x);
 
-#define read16(x) (mono_read16 ((x)))
-#define read32(x) (mono_read32 ((x)))
-#define read64(x) (mono_read64 ((x)))
+#define read16(x) (mono_read16 ((const unsigned char *)(x)))
+#define read32(x) (mono_read32 ((const unsigned char *)(x)))
+#define read64(x) (mono_read64 ((const unsigned char *)(x)))
 
 #else
 
index 5689fa35cb8d8b729afe8d41a4fd92d5a5bc235b..0b60fc186d870b2527adc23abc5e9dabd3be4955 100644 (file)
@@ -94,8 +94,10 @@ mono_runtime_class_init (MonoVTable *vtable)
        if (found) {
                mono_domain_lock (vtable->domain);
                /* double check... */
-               if (vtable->initialized || vtable->initializing)
+               if (vtable->initialized || vtable->initializing) {
+                       mono_domain_unlock (vtable->domain);
                        return;
+               }
                vtable->initializing = 1;
                mono_runtime_invoke (method, NULL, NULL, (MonoObject **) &exc);
                vtable->initialized = 1;
index ba016796f94d52baa3b0a5a7f90ba42b5921f5d9..6c97d4d621026d78ba083b4410458e1de5c4ce7a 100644 (file)
 
 #define ROUND_DOWN(VALUE,SIZE) ((VALUE) & ~((SIZE) - 1))
 #define ROUND_UP(VALUE,SIZE)   (ROUND_DOWN((VALUE) + (SIZE) - 1, (SIZE)))
+#if SIZEOF_VOID_P == 8
+#define UINTPTR_TYPE guint64
+#else
+#define UINTPTR_TYPE guint32
+#endif
 
 static GHashTable *mmap_map = NULL;
 static size_t alignment = 0;
@@ -185,7 +190,7 @@ mono_raw_buffer_update (void *buffer, size_t size)
 {
        char *mmap_base;
 
-       mmap_base = GINT_TO_POINTER (ROUND_DOWN (GPOINTER_TO_INT (buffer), alignment));
+       mmap_base =  (gpointer)(ROUND_DOWN ((UINTPTR_TYPE) (buffer), alignment));
        
        if (mmap_map && g_hash_table_lookup (mmap_map, mmap_base))
                mono_raw_buffer_update_mmap (mmap_base, size);
@@ -196,7 +201,7 @@ mono_raw_buffer_free (void *buffer)
 {
        char *mmap_base;
 
-       mmap_base = GINT_TO_POINTER (ROUND_DOWN (GPOINTER_TO_INT (buffer), alignment));
+       mmap_base = (gpointer)(ROUND_DOWN ((UINTPTR_TYPE) (buffer), alignment));
        
        if (mmap_map && g_hash_table_lookup (mmap_map, mmap_base))
                mono_raw_buffer_free_mmap (mmap_base);
index ea04cba5f0174bfce235ba221922fb5a8b2e1a66..e6189db9cc8325b8ceaa59fd0681d39438b11fd2 100644 (file)
@@ -2220,13 +2220,13 @@ build_compressed_metadata (MonoDynamicAssembly *assembly)
        struct StreamDesc {
                const char *name;
                MonoDynamicStream *stream;
-       } stream_desc [] = {
-               {"#~", &assembly->tstream},
-               {"#Strings", &assembly->sheap},
-               {"#US", &assembly->us},
-               {"#Blob", &assembly->blob},
-               {"#GUID", &assembly->guid}
-       };
+       } stream_desc [5];
+
+       stream_desc[0].name  = "#~"; stream_desc[0].stream = &assembly->tstream;
+       stream_desc[1].name  = "#Strings"; stream_desc[1].stream = &assembly->sheap;
+       stream_desc[2].name  = "#US"; stream_desc[2].stream = &assembly->us;
+       stream_desc[3].name  = "#Blob"; stream_desc[3].stream = &assembly->blob;
+       stream_desc[4].name  = "#GUID"; stream_desc[4].stream = &assembly->guid;
        
        /* tables that are sorted */
        sorted_mask = ((guint64)1 << MONO_TABLE_CONSTANT) | ((guint64)1 << MONO_TABLE_FIELDMARSHAL)