From 0472c0073e6da968a639900906b997a1c52f860e Mon Sep 17 00:00:00 2001 From: "jst%mozilla.jstenback.com" Date: Wed, 12 Jan 2005 19:56:32 +0000 Subject: [PATCH] Fixing bug 265174. Quiet down compiler warnings on Linux x86_64. r+sr=brendan@mozilla.org --- js/src/jsapi.c | 4 ++-- js/src/jsatom.c | 4 ++-- js/src/jsatom.h | 6 +++--- js/src/jscntxt.c | 2 +- js/src/jsdhash.c | 2 +- js/src/jsobj.c | 11 ++++++----- js/src/jsobj.h | 10 +++++----- js/src/jsstr.c | 2 +- js/src/jstypes.h | 13 +++++++++++++ 9 files changed, 34 insertions(+), 20 deletions(-) diff --git a/js/src/jsapi.c b/js/src/jsapi.c index b4e34b4a913f..08fca068b029 100644 --- a/js/src/jsapi.c +++ b/js/src/jsapi.c @@ -86,7 +86,7 @@ #endif #ifdef HAVE_VA_LIST_AS_ARRAY -#define JS_ADDRESSOF_VA_LIST(ap) (ap) +#define JS_ADDRESSOF_VA_LIST(ap) ((va_list *)(ap)) #else #define JS_ADDRESSOF_VA_LIST(ap) (&(ap)) #endif @@ -2258,7 +2258,7 @@ DefineProperty(JSContext *cx, JSObject *obj, const char *name, jsval value, JSAtom *atom; if (attrs & JSPROP_INDEX) { - id = INT_TO_JSID((jsint)name); + id = INT_TO_JSID(JS_PTR_TO_INT32(name)); atom = NULL; attrs &= ~JSPROP_INDEX; } else { diff --git a/js/src/jsatom.c b/js/src/jsatom.c index a2ad12d0c971..a460e8bc59d6 100644 --- a/js/src/jsatom.c +++ b/js/src/jsatom.c @@ -146,9 +146,9 @@ const char js_ExecutionContext_str[] = "ExecutionContext"; const char js_current_str[] = "current"; #endif -#define HASH_OBJECT(o) ((JSHashNumber)(o) >> JSVAL_TAGBITS) +#define HASH_OBJECT(o) (JS_PTR_TO_UINT32(o) >> JSVAL_TAGBITS) #define HASH_INT(i) ((JSHashNumber)(i)) -#define HASH_DOUBLE(dp) ((JSHashNumber)(JSDOUBLE_HI32(*dp) ^ JSDOUBLE_LO32(*dp))) +#define HASH_DOUBLE(dp) ((JSDOUBLE_HI32(*dp) ^ JSDOUBLE_LO32(*dp))) #define HASH_BOOLEAN(b) ((JSHashNumber)(b)) JS_STATIC_DLL_CALLBACK(JSHashNumber) diff --git a/js/src/jsatom.h b/js/src/jsatom.h index b239f8e43cfd..2856ddcc3ec2 100644 --- a/js/src/jsatom.h +++ b/js/src/jsatom.h @@ -95,14 +95,14 @@ struct JSAtomListElement { }; #define ALE_ATOM(ale) ((JSAtom *) (ale)->entry.key) -#define ALE_INDEX(ale) ((jsatomid) (ale)->entry.value) +#define ALE_INDEX(ale) ((jsatomid) JS_PTR_TO_UINT32((ale)->entry.value)) #define ALE_JSOP(ale) ((JSOp) (ale)->entry.value) #define ALE_VALUE(ale) ((jsval) (ale)->entry.value) #define ALE_NEXT(ale) ((JSAtomListElement *) (ale)->entry.next) #define ALE_SET_ATOM(ale,atom) ((ale)->entry.key = (const void *)(atom)) -#define ALE_SET_INDEX(ale,index)((ale)->entry.value = (void *)(index)) -#define ALE_SET_JSOP(ale,op) ((ale)->entry.value = (void *)(jsuword)(op)) +#define ALE_SET_INDEX(ale,index)((ale)->entry.value = JS_UINT32_TO_PTR(index)) +#define ALE_SET_JSOP(ale,op) ((ale)->entry.value = JS_UINT32_TO_PTR(op)) #define ALE_SET_VALUE(ale,val) ((ale)->entry.value = (JSHashEntry *)(val)) #define ALE_SET_NEXT(ale,link) ((ale)->entry.next = (JSHashEntry *)(link)) diff --git a/js/src/jscntxt.c b/js/src/jscntxt.c index 16ea3eefc72f..90ec8d595aaa 100644 --- a/js/src/jscntxt.c +++ b/js/src/jscntxt.c @@ -355,7 +355,7 @@ resolving_HashKey(JSDHashTable *table, const void *ptr) { const JSResolvingKey *key = (const JSResolvingKey *)ptr; - return ((JSDHashNumber)key->obj >> JSVAL_TAGBITS) ^ key->id; + return ((JSDHashNumber)JS_PTR_TO_UINT32(key->obj) >> JSVAL_TAGBITS) ^ key->id; } JS_PUBLIC_API(JSBool) diff --git a/js/src/jsdhash.c b/js/src/jsdhash.c index abcc36d05169..bbb909fc56ce 100644 --- a/js/src/jsdhash.c +++ b/js/src/jsdhash.c @@ -91,7 +91,7 @@ JS_DHashGetKeyStub(JSDHashTable *table, JSDHashEntryHdr *entry) JS_PUBLIC_API(JSDHashNumber) JS_DHashVoidPtrKeyStub(JSDHashTable *table, const void *key) { - return (JSDHashNumber)key >> 2; + return (JSDHashNumber)(unsigned long)key >> 2; } JS_PUBLIC_API(JSBool) diff --git a/js/src/jsobj.c b/js/src/jsobj.c index 2640d9354e18..d46c9e41a173 100644 --- a/js/src/jsobj.c +++ b/js/src/jsobj.c @@ -371,7 +371,7 @@ js_SetProtoOrParent(JSContext *cx, JSObject *obj, uint32 slot, JSObject *pobj) JS_STATIC_DLL_CALLBACK(JSHashNumber) js_hash_object(const void *key) { - return (JSHashNumber)key >> JSVAL_TAGBITS; + return (JSHashNumber)JS_PTR_TO_UINT32(key) >> JSVAL_TAGBITS; } static JSHashEntry * @@ -400,7 +400,8 @@ MarkSharpObjects(JSContext *cx, JSObject *obj, JSIdArray **idap) he = *hep; if (!he) { sharpid = 0; - he = JS_HashTableRawAdd(table, hep, hash, obj, (void *)sharpid); + he = JS_HashTableRawAdd(table, hep, hash, obj, + JS_UINT32_TO_PTR(sharpid)); if (!he) { JS_ReportOutOfMemory(cx); return NULL; @@ -454,10 +455,10 @@ MarkSharpObjects(JSContext *cx, JSObject *obj, JSIdArray **idap) if (!ok) return NULL; } else { - sharpid = (jsatomid) he->value; + sharpid = JS_PTR_TO_UINT32(he->value); if (sharpid == 0) { sharpid = ++map->sharpgen << SHARP_ID_SHIFT; - he->value = (void *) sharpid; + he->value = JS_UINT32_TO_PTR(sharpid); } ida = NULL; } @@ -533,7 +534,7 @@ js_EnterSharpObject(JSContext *cx, JSObject *obj, JSIdArray **idap, } } - sharpid = (jsatomid) he->value; + sharpid = JS_PTR_TO_UINT32(he->value); if (sharpid == 0) { *sp = NULL; } else { diff --git a/js/src/jsobj.h b/js/src/jsobj.h index 16684303066a..534b35877813 100644 --- a/js/src/jsobj.h +++ b/js/src/jsobj.h @@ -235,11 +235,11 @@ struct JSSharpObjectMap { #define SHARP_BIT ((jsatomid) 1) #define BUSY_BIT ((jsatomid) 2) #define SHARP_ID_SHIFT 2 -#define IS_SHARP(he) ((jsatomid)(he)->value & SHARP_BIT) -#define MAKE_SHARP(he) ((he)->value = (void*)((jsatomid)(he)->value|SHARP_BIT)) -#define IS_BUSY(he) ((jsatomid)(he)->value & BUSY_BIT) -#define MAKE_BUSY(he) ((he)->value = (void*)((jsatomid)(he)->value|BUSY_BIT)) -#define CLEAR_BUSY(he) ((he)->value = (void*)((jsatomid)(he)->value&~BUSY_BIT)) +#define IS_SHARP(he) (JS_PTR_TO_UINT32((he)->value) & SHARP_BIT) +#define MAKE_SHARP(he) ((he)->value = JS_UINT32_TO_PTR(JS_PTR_TO_UINT32((he)->value)|SHARP_BIT)) +#define IS_BUSY(he) (JS_PTR_TO_UINT32((he)->value) & BUSY_BIT) +#define MAKE_BUSY(he) ((he)->value = JS_UINT32_TO_PTR(JS_PTR_TO_UINT32((he)->value)|BUSY_BIT)) +#define CLEAR_BUSY(he) ((he)->value = JS_UINT32_TO_PTR(JS_PTR_TO_UINT32((he)->value)&~BUSY_BIT)) extern JSHashEntry * js_EnterSharpObject(JSContext *cx, JSObject *obj, JSIdArray **idap, diff --git a/js/src/jsstr.c b/js/src/jsstr.c index d31f20476a15..58c505cfcdbf 100644 --- a/js/src/jsstr.c +++ b/js/src/jsstr.c @@ -2588,7 +2588,7 @@ js_NewStringCopyZ(JSContext *cx, const jschar *s, uintN gcflag) JS_STATIC_DLL_CALLBACK(JSHashNumber) js_hash_string_pointer(const void *key) { - return (JSHashNumber)key >> JSVAL_TAGBITS; + return (JSHashNumber)JS_PTR_TO_UINT32(key) >> JSVAL_TAGBITS; } void diff --git a/js/src/jstypes.h b/js/src/jstypes.h index 881dad63cb0f..1d9e98f6ebbd 100644 --- a/js/src/jstypes.h +++ b/js/src/jstypes.h @@ -208,6 +208,19 @@ #define JS_BIT(n) ((JSUint32)1 << (n)) #define JS_BITMASK(n) (JS_BIT(n) - 1) +/*********************************************************************** +** MACROS: JS_PTR_TO_INT32 +** JS_PTR_TO_UINT32 +** JS_INT32_TO_PTR +** JS_UINT32_TO_PTR +** DESCRIPTION: +** Integer to pointer and pointer to integer conversion macros. +***********************************************************************/ +#define JS_PTR_TO_INT32(x) ((jsint)((char *)(x) - (char *)0)) +#define JS_PTR_TO_UINT32(x) ((jsuint)((char *)(x) - (char *)0)) +#define JS_INT32_TO_PTR(x) ((void *)((char *)0 + (jsint)(x))) +#define JS_UINT32_TO_PTR(x) ((void *)((char *)0 + (jsuint)(x))) + /*********************************************************************** ** MACROS: JS_HOWMANY ** JS_ROUNDUP