+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
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)
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
}
/**
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
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;
#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;
{
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);
{
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);
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)