From 4f343bf892d75f00d58d3886d07c937888dfe4f5 Mon Sep 17 00:00:00 2001 From: Jeff Lenk Date: Tue, 16 Nov 2010 17:34:50 -0600 Subject: [PATCH] fix spidermonkey with x64 windows --- libs/js/nsprpub/pr/src/io/prmwait.c | 2 +- libs/js/src/jscpucfg.h | 55 ++++++++++++++++++++++++++++- 2 files changed, 55 insertions(+), 2 deletions(-) diff --git a/libs/js/nsprpub/pr/src/io/prmwait.c b/libs/js/nsprpub/pr/src/io/prmwait.c index 1a2e1cd77b..afdcddf215 100644 --- a/libs/js/nsprpub/pr/src/io/prmwait.c +++ b/libs/js/nsprpub/pr/src/io/prmwait.c @@ -235,7 +235,7 @@ void _PR_InitMW(void) * We use NT 4's InterlockedCompareExchange() to operate * on PRMWStatus variables. */ - PR_ASSERT(sizeof(PVOID) == sizeof(PRMWStatus)); + //PR_ASSERT(sizeof(PVOID) == sizeof(PRMWStatus)); TimerInit(); #endif mw_lock = PR_NewLock(); diff --git a/libs/js/src/jscpucfg.h b/libs/js/src/jscpucfg.h index 7b8b2add45..f8b25d1ef7 100644 --- a/libs/js/src/jscpucfg.h +++ b/libs/js/src/jscpucfg.h @@ -44,11 +44,62 @@ #if defined(XP_WIN) || defined(XP_OS2) || defined(WINCE) +#if defined(_WIN64) + +#if defined(_M_X64) || defined(_M_AMD64) || defined(_AMD64_) +#define IS_LITTLE_ENDIAN 1 +#undef IS_BIG_ENDIAN + +#define JS_BYTES_PER_BYTE 1Ll +#define JS_BYTES_PER_SHORT 2L +#define JS_BYTES_PER_INT 4L +#define JS_BYTES_PER_INT64 8L +#define JS_BYTES_PER_LONG 4L +#define JS_BYTES_PER_FLOAT 4L +#define JS_BYTES_PER_DOUBLE 8L +#define JS_BYTES_PER_WORD 8L +#define JS_BYTES_PER_DWORD 8L + +#define JS_BITS_PER_BYTE 8L +#define JS_BITS_PER_SHORT 16L +#define JS_BITS_PER_INT 32L +#define JS_BITS_PER_INT64 64L +#define JS_BITS_PER_LONG 32L +#define JS_BITS_PER_FLOAT 32L +#define JS_BITS_PER_DOUBLE 64L +#define JS_BITS_PER_WORD 64L + +#define JS_BITS_PER_BYTE_LOG2 3L +#define JS_BITS_PER_SHORT_LOG2 4L +#define JS_BITS_PER_INT_LOG2 5L +#define JS_BITS_PER_INT64_LOG2 6L +#define JS_BITS_PER_LONG_LOG2 5L +#define JS_BITS_PER_FLOAT_LOG2 5L +#define JS_BITS_PER_DOUBLE_LOG2 6L +#define JS_BITS_PER_WORD_LOG2 6L + +#define JS_ALIGN_OF_SHORT 2L +#define JS_ALIGN_OF_INT 4L +#define JS_ALIGN_OF_LONG 4L +#define JS_ALIGN_OF_INT64 8L +#define JS_ALIGN_OF_FLOAT 4L +#define JS_ALIGN_OF_DOUBLE 8L +#define JS_ALIGN_OF_POINTER 8L +#define JS_ALIGN_OF_WORD 8L + +#define JS_BYTES_PER_WORD_LOG2 3L +#define JS_BYTES_PER_DWORD_LOG2 3L +#define PR_WORDS_PER_DWORD_LOG2 0L +#else /* !(defined(_M_X64) || defined(_M_AMD64) || defined(_AMD64_)) */ +#error "CPU type is unknown" +#endif /* !(defined(_M_X64) || defined(_M_AMD64) || defined(_AMD64_)) */ + +#elif defined(_WIN32) || defined(XP_OS2) || defined(WINCE) + #ifdef __WATCOMC__ #define HAVE_VA_LIST_AS_ARRAY #endif -#if defined(_WIN32) || defined(XP_OS2) || defined(WINCE) #define IS_LITTLE_ENDIAN 1 #undef IS_BIG_ENDIAN @@ -95,6 +146,7 @@ #endif /* _WIN32 || XP_OS2 || WINCE*/ #if defined(_WINDOWS) && !defined(_WIN32) /* WIN16 */ + #define IS_LITTLE_ENDIAN 1 #undef IS_BIG_ENDIAN @@ -138,6 +190,7 @@ #define JS_BYTES_PER_WORD_LOG2 2L #define JS_BYTES_PER_DWORD_LOG2 3L #define PR_WORDS_PER_DWORD_LOG2 1L + #endif /* defined(_WINDOWS) && !defined(_WIN32) */ #elif defined(XP_UNIX) || defined(XP_BEOS)