Date: Tue, 19 Mar 2013 21:48:39 GMT From: svn-freebsd-gecko@chruetertee.ch To: freebsd-gecko@freebsd.org Subject: [SVN-Commit] r1216 - in trunk: devel/nspr www/firefox-nightly www/firefox-nightly/files Message-ID: <201303192148.r2JLmdq4020438@trillian.chruetertee.ch>
next in thread | raw e-mail | index | archive | help
Author: jbeich Date: Tue Mar 19 21:48:38 2013 New Revision: 1216 Log: update Deleted: trunk/www/firefox-nightly/files/patch-bug807883 Modified: trunk/devel/nspr/Makefile trunk/devel/nspr/distinfo trunk/www/firefox-nightly/Makefile trunk/www/firefox-nightly/Makefile.hgrev trunk/www/firefox-nightly/distinfo trunk/www/firefox-nightly/files/patch-bug851880 Modified: trunk/devel/nspr/Makefile ============================================================================== --- trunk/devel/nspr/Makefile Sun Mar 17 22:05:15 2013 (r1215) +++ trunk/devel/nspr/Makefile Tue Mar 19 21:48:38 2013 (r1216) @@ -6,7 +6,7 @@ # $MCom: ports-experimental/devel/nspr/Makefile,v 1.6 2008/03/12 13:06:56 ahze Exp $ PORTNAME= nspr -DISTVERSION= 4.9.5 +DISTVERSION= 4.9.6 CATEGORIES= devel MASTER_SITES= MOZILLA MASTER_SITE_SUBDIR= nspr/releases/v${PORTVERSION}/src Modified: trunk/devel/nspr/distinfo ============================================================================== --- trunk/devel/nspr/distinfo Sun Mar 17 22:05:15 2013 (r1215) +++ trunk/devel/nspr/distinfo Tue Mar 19 21:48:38 2013 (r1216) @@ -1,2 +1,2 @@ -SHA256 (nspr-4.9.5.tar.gz) = 616ab65c849155c9ed0e5f502530a241cc9108e278275aa448b417ae632c7604 -SIZE (nspr-4.9.5.tar.gz) = 1156396 +SHA256 (nspr-4.9.6.tar.gz) = 7693fddd3c5cc15d53a50df53ab5dcdaa2eb58f5003302690559471744d6c6f9 +SIZE (nspr-4.9.6.tar.gz) = 1163033 Modified: trunk/www/firefox-nightly/Makefile ============================================================================== --- trunk/www/firefox-nightly/Makefile Sun Mar 17 22:05:15 2013 (r1215) +++ trunk/www/firefox-nightly/Makefile Tue Mar 19 21:48:38 2013 (r1216) @@ -13,7 +13,7 @@ MAINTAINER= gecko@FreeBSD.org COMMENT= Web browser based on the browser portion of Mozilla -BUILD_DEPENDS= nspr>=4.9.4:${PORTSDIR}/devel/nspr \ +BUILD_DEPENDS= nspr>=4.9.6:${PORTSDIR}/devel/nspr \ nss>=3.14.2:${PORTSDIR}/security/nss \ sqlite3>=3.7.14.1:${PORTSDIR}/databases/sqlite3 \ ${PYTHON_PKGNAMEPREFIX}sqlite3>0:${PORTSDIR}/databases/py-sqlite3 \ Modified: trunk/www/firefox-nightly/Makefile.hgrev ============================================================================== --- trunk/www/firefox-nightly/Makefile.hgrev Sun Mar 17 22:05:15 2013 (r1215) +++ trunk/www/firefox-nightly/Makefile.hgrev Tue Mar 19 21:48:38 2013 (r1216) @@ -1 +1 @@ -HGREV= 125126:09f72f45a0b7 +HGREV= 125380:f4394e306dad Modified: trunk/www/firefox-nightly/distinfo ============================================================================== --- trunk/www/firefox-nightly/distinfo Sun Mar 17 22:05:15 2013 (r1215) +++ trunk/www/firefox-nightly/distinfo Tue Mar 19 21:48:38 2013 (r1216) @@ -1,2 +1,2 @@ -SHA256 (firefox-nightly/09f72f45a0b7.tar.bz2) = 8fbcca20b7f3b98498514995cdf200426f22de5d0dec5ea3209eb47fede9148a -SIZE (firefox-nightly/09f72f45a0b7.tar.bz2) = 109449607 +SHA256 (firefox-nightly/f4394e306dad.tar.bz2) = b5540a98c7f9b5036314c5a634091b889336de6ce5e69e1258215735dfb24b83 +SIZE (firefox-nightly/f4394e306dad.tar.bz2) = 109212098 Deleted: trunk/www/firefox-nightly/files/patch-bug807883 ============================================================================== --- trunk/www/firefox-nightly/files/patch-bug807883 Tue Mar 19 21:48:38 2013 (r1215) +++ /dev/null 00:00:00 1970 (deleted) @@ -1,109 +0,0 @@ -commit 9bc203a -Author: Wan-Teh Chang <wtc@google.com> -Date: Tue Feb 12 08:54:38 2013 -0800 - - Bug 807883: Use the new PL_SizeOfArenaPoolExcludingPool function - in NSPR 4.9.6. Portions of the patch were written by Nicholas - Nethercote <n.nethercote@gmail.com>. r=n.nethercote. ---- - configure.in | 2 +- - layout/base/nsPresArena.cpp | 11 ++--------- - modules/libpref/src/prefapi.cpp | 9 +-------- - xpcom/components/nsCategoryManager.cpp | 9 +-------- - xpcom/components/nsComponentManager.cpp | 9 +-------- - 5 files changed, 6 insertions(+), 34 deletions(-) - -diff --git configure.in configure.in -index b2225f4..55e4cd1 100644 ---- configure.in -+++ configure.in -@@ -3856,7 +3856,7 @@ - _USE_SYSTEM_NSPR=1 ) - - if test -n "$_USE_SYSTEM_NSPR"; then -- AM_PATH_NSPR(4.9.6, [MOZ_NATIVE_NSPR=1], [AC_MSG_ERROR([your don't have NSPR installed or your version is too old])]) -+ AM_PATH_NSPR(4.9.4, [MOZ_NATIVE_NSPR=1], [AC_MSG_ERROR([your don't have NSPR installed or your version is too old])]) - fi - - if test -n "$MOZ_NATIVE_NSPR"; then -diff --git layout/base/nsPresArena.cpp layout/base/nsPresArena.cpp -index 8721eec..7daafb4 100644 ---- layout/base/nsPresArena.cpp -+++ layout/base/nsPresArena.cpp -@@ -405,7 +405,15 @@ - size_t SizeOfIncludingThisFromMalloc(nsMallocSizeOfFun aMallocSizeOf) const - { - size_t n = aMallocSizeOf(this); -- n += PL_SizeOfArenaPoolExcludingPool(&mPool, aMallocSizeOf); -+ -+ // The first PLArena is within the PLArenaPool, i.e. within |this|, so we -+ // don't measure it. Subsequent PLArenas are by themselves and must be -+ // measured. -+ const PLArena *arena = mPool.first.next; -+ while (arena) { -+ n += aMallocSizeOf(arena); -+ arena = arena->next; -+ } - n += mFreeLists.SizeOfExcludingThis(SizeOfFreeListEntryExcludingThis, - aMallocSizeOf); - return n; -diff --git modules/libpref/src/prefapi.cpp modules/libpref/src/prefapi.cpp -index 85dea39..0dd74de 100644 ---- modules/libpref/src/prefapi.cpp -+++ modules/libpref/src/prefapi.cpp -@@ -809,7 +809,14 @@ - size_t - pref_SizeOfPrivateData(nsMallocSizeOfFun aMallocSizeOf) - { -- size_t n = PL_SizeOfArenaPoolExcludingPool(&gPrefNameArena, aMallocSizeOf); -+ size_t n = 0; -+ // The first PLArena is within the PLArenaPool, so start measuring -+ // malloc'd data with the second arena. -+ const PLArena* arena = gPrefNameArena.first.next; -+ while (arena) { -+ n += aMallocSizeOf(arena); -+ arena = arena->next; -+ } - for (struct CallbackNode* node = gCallbacks; node; node = node->next) { - n += aMallocSizeOf(node); - n += aMallocSizeOf(node->domain); -diff --git xpcom/components/nsCategoryManager.cpp xpcom/components/nsCategoryManager.cpp -index 8e964bb..62e873c 100644 ---- xpcom/components/nsCategoryManager.cpp -+++ xpcom/components/nsCategoryManager.cpp -@@ -512,7 +512,14 @@ - { - size_t n = aMallocSizeOf(this); - -- n += PL_SizeOfArenaPoolExcludingPool(&mArena, aMallocSizeOf); -+ // The first PLArena is within the PLArenaPool, i.e. within |this|, so we -+ // don't measure it. Subsequent PLArenas are by themselves and must be -+ // measured. -+ const PLArena *arena = mArena.first.next; -+ while (arena) { -+ n += aMallocSizeOf(arena); -+ arena = arena->next; -+ } - - n += mTable.SizeOfExcludingThis(SizeOfCategoryManagerTableEntryExcludingThis, - aMallocSizeOf); -diff --git xpcom/components/nsComponentManager.cpp xpcom/components/nsComponentManager.cpp -index f6f9f0a..c80f4c3 100644 ---- xpcom/components/nsComponentManager.cpp -+++ xpcom/components/nsComponentManager.cpp -@@ -1680,7 +1680,14 @@ - n += mKnownStaticModules.SizeOfExcludingThis(aMallocSizeOf); - n += mKnownModules.SizeOfExcludingThis(nullptr, aMallocSizeOf); - -- n += PL_SizeOfArenaPoolExcludingPool(&mArena, aMallocSizeOf); -+ // The first PLArena is within the PLArenaPool, i.e. within |this|, so we -+ // don't measure it. Subsequent PLArenas are by themselves and must be -+ // measured. -+ const PLArena *arena = mArena.first.next; -+ while (arena) { -+ n += aMallocSizeOf(arena); -+ arena = arena->next; -+ } - - n += mPendingServices.SizeOfExcludingThis(aMallocSizeOf); - Modified: trunk/www/firefox-nightly/files/patch-bug851880 ============================================================================== --- trunk/www/firefox-nightly/files/patch-bug851880 Sun Mar 17 22:05:15 2013 (r1215) +++ trunk/www/firefox-nightly/files/patch-bug851880 Tue Mar 19 21:48:38 2013 (r1216) @@ -1,159 +1,441 @@ diff --git js/src/ion/AsmJS.h js/src/ion/AsmJS.h -index 52f09fc..f806452 100644 +index 17f2bc8..1600131 100644 --- js/src/ion/AsmJS.h +++ js/src/ion/AsmJS.h -@@ -13,7 +13,7 @@ +@@ -11,9 +11,8 @@ + // asm.js compilation is only available on desktop x86/x64 at the moment. + // Don't panic, mobile support is coming soon. #if defined(JS_ION) && \ - !defined(ANDROID) && \ - (defined(JS_CPU_X86) || defined(JS_CPU_X64)) && \ -- (defined(__linux__) || defined(XP_WIN) || defined(XP_MACOSX)) -+ (defined(__linux__) || defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(XP_WIN) || defined(XP_MACOSX)) +- !defined(ANDROID) && \ +- (defined(JS_CPU_X86) || defined(JS_CPU_X64)) && \ +- (defined(__linux__) || defined(XP_WIN)) ++ (!defined(ANDROID) && !defined(XP_MACOSX)) && \ ++ (defined(JS_CPU_X86) || defined(JS_CPU_X64)) # define JS_ASMJS #endif diff --git js/src/ion/AsmJSSignalHandlers.cpp js/src/ion/AsmJSSignalHandlers.cpp -index 45eeac9..d4c68bd 100644 +index 45eeac9..50bf71c 100644 --- js/src/ion/AsmJSSignalHandlers.cpp +++ js/src/ion/AsmJSSignalHandlers.cpp -@@ -352,6 +352,136 @@ SetRegisterToCoercedUndefined(mcontext_t &context, bool isFloat32, AnyRegister r - } - } - # endif -+# elif defined(__NetBSD__) || defined(__OpenBSD__) -+# include <machine/mcontext.h> -+ -+static uint8_t ** -+ContextToPC(mcontext_t &context) -+{ -+# if defined(JS_CPU_X86) -+ JS_STATIC_ASSERT(sizeof(context.__gregs[_REG_EIP]) == sizeof(void*)); -+ return reinterpret_cast<uint8_t**>(&context.__gregs[_REG_EIP]); -+# else -+ JS_STATIC_ASSERT(sizeof(context.__gregs[_REG_RIP]) == sizeof(void*)); -+ return reinterpret_cast<uint8_t**>(&context.__gregs[_REG_RIP]); -+# endif -+} -+ -+# if defined(JS_CPU_X64) -+# include <machine/fpu.h> -+# define fp_xmm(mc,i) (&((struct fxsave64 *)(mc)->__fpregs)->fx_xmm[i]) +@@ -18,6 +18,138 @@ using namespace js::ion; + + #ifdef JS_ASMJS + ++#if defined(XP_WIN) ++# define XMM_sig(p,i) ((p)->Xmm##i) ++# define EIP_sig(p) ((p)->Eip) ++# define RIP_sig(p) ((p)->Rip) ++# define RAX_sig(p) ((p)->Rax) ++# define RCX_sig(p) ((p)->Rcx) ++# define RDX_sig(p) ((p)->Rdx) ++# define RBX_sig(p) ((p)->Rbx) ++# define RSP_sig(p) ((p)->Rsp) ++# define RBP_sig(p) ((p)->Rbp) ++# define RSI_sig(p) ((p)->Rsi) ++# define RDI_sig(p) ((p)->Rdi) ++# define R8_sig(p) ((p)->R8) ++# define R9_sig(p) ((p)->R9) ++# define R10_sig(p) ((p)->R10) ++# define R11_sig(p) ((p)->R11) ++# define R12_sig(p) ((p)->R12) ++# define R13_sig(p) ((p)->R13) ++# define R14_sig(p) ((p)->R14) ++# define R15_sig(p) ((p)->R15) ++#elif defined(__OpenBSD__) ++# define XMM_sig(p,i) ((p)->sc_fpstate->fx_xmm[i]) ++# define EIP_sig(p) ((p)->sc_eip) ++# define RIP_sig(p) ((p)->sc_rip) ++# define RAX_sig(p) ((p)->sc_rax) ++# define RCX_sig(p) ((p)->sc_rcx) ++# define RDX_sig(p) ((p)->sc_rdx) ++# define RBX_sig(p) ((p)->sc_rbx) ++# define RSP_sig(p) ((p)->sc_rsp) ++# define RBP_sig(p) ((p)->sc_rbp) ++# define RSI_sig(p) ((p)->sc_rsi) ++# define RDI_sig(p) ((p)->sc_rdi) ++# define R8_sig(p) ((p)->sc_r8) ++# define R9_sig(p) ((p)->sc_r9) ++# define R10_sig(p) ((p)->sc_r10) ++# define R11_sig(p) ((p)->sc_r11) ++# define R12_sig(p) ((p)->sc_r12) ++# define R13_sig(p) ((p)->sc_r13) ++# define R14_sig(p) ((p)->sc_r14) ++# define R15_sig(p) ((p)->sc_r15) ++#elif defined(__linux__) || defined(SOLARIS) ++# if defined(__linux__) ++# define XMM_sig(p,i) ((p)->uc_mcontext.fpregs->_xmm[i]) ++# else ++# define XMM_sig(p,i) ((p)->uc_mcontext.fpregs->xmm[i]) ++# endif ++# define EIP_sig(p) ((p)->uc_mcontext.gregs[REG_EIP]) ++# define RIP_sig(p) ((p)->uc_mcontext.gregs[REG_RIP]) ++# define RAX_sig(p) ((p)->uc_mcontext.gregs[REG_RAX]) ++# define RCX_sig(p) ((p)->uc_mcontext.gregs[REG_RCX]) ++# define RDX_sig(p) ((p)->uc_mcontext.gregs[REG_RDX]) ++# define RBX_sig(p) ((p)->uc_mcontext.gregs[REG_RBX]) ++# define RSP_sig(p) ((p)->uc_mcontext.gregs[REG_RSP]) ++# define RBP_sig(p) ((p)->uc_mcontext.gregs[REG_RBP]) ++# define RSI_sig(p) ((p)->uc_mcontext.gregs[REG_RSI]) ++# define RDI_sig(p) ((p)->uc_mcontext.gregs[REG_RDI]) ++# define R8_sig(p) ((p)->uc_mcontext.gregs[REG_R8]) ++# define R9_sig(p) ((p)->uc_mcontext.gregs[REG_R9]) ++# define R10_sig(p) ((p)->uc_mcontext.gregs[REG_R10]) ++# define R11_sig(p) ((p)->uc_mcontext.gregs[REG_R11]) ++# define R12_sig(p) ((p)->uc_mcontext.gregs[REG_R12]) ++# define R13_sig(p) ((p)->uc_mcontext.gregs[REG_R13]) ++# define R14_sig(p) ((p)->uc_mcontext.gregs[REG_R14]) ++# define R15_sig(p) ((p)->uc_mcontext.gregs[REG_R15]) ++#elif defined(__NetBSD__) ++# define XMM_sig(p,i) (((struct fxsave64 *)(p)->uc_mcontext.__fpregs)->fx_xmm[i]) ++# define EIP_sig(p) ((p)->uc_mcontext.__gregs[_REG_EIP]) ++# define RIP_sig(p) ((p)->uc_mcontext.__gregs[_REG_RIP]) ++# define RAX_sig(p) ((p)->uc_mcontext.__gregs[_REG_RAX]) ++# define RCX_sig(p) ((p)->uc_mcontext.__gregs[_REG_RCX]) ++# define RDX_sig(p) ((p)->uc_mcontext.__gregs[_REG_RDX]) ++# define RBX_sig(p) ((p)->uc_mcontext.__gregs[_REG_RBX]) ++# define RSP_sig(p) ((p)->uc_mcontext.__gregs[_REG_RSP]) ++# define RBP_sig(p) ((p)->uc_mcontext.__gregs[_REG_RBP]) ++# define RSI_sig(p) ((p)->uc_mcontext.__gregs[_REG_RSI]) ++# define RDI_sig(p) ((p)->uc_mcontext.__gregs[_REG_RDI]) ++# define R8_sig(p) ((p)->uc_mcontext.__gregs[_REG_R8]) ++# define R9_sig(p) ((p)->uc_mcontext.__gregs[_REG_R9]) ++# define R10_sig(p) ((p)->uc_mcontext.__gregs[_REG_R10]) ++# define R11_sig(p) ((p)->uc_mcontext.__gregs[_REG_R11]) ++# define R12_sig(p) ((p)->uc_mcontext.__gregs[_REG_R12]) ++# define R13_sig(p) ((p)->uc_mcontext.__gregs[_REG_R13]) ++# define R14_sig(p) ((p)->uc_mcontext.__gregs[_REG_R14]) ++# define R15_sig(p) ((p)->uc_mcontext.__gregs[_REG_R15]) ++#elif defined(__DragonFly__) || defined(__FreeBSD__) ++# if defined(__DragonFly__) ++# define XMM_sig(p,i) (((union savefpu *)(p)->uc_mcontext.mc_fpregs)->sv_xmm.sv_xmm[i]) ++# else ++# define XMM_sig(p,i) (((struct savefpu *)(p)->uc_mcontext.mc_fpstate)->sv_xmm[i]) ++# endif ++# define EIP_sig(p) ((p)->uc_mcontext.mc_eip) ++# define RIP_sig(p) ((p)->uc_mcontext.mc_rip) ++# define RAX_sig(p) ((p)->uc_mcontext.mc_rax) ++# define RCX_sig(p) ((p)->uc_mcontext.mc_rcx) ++# define RDX_sig(p) ((p)->uc_mcontext.mc_rdx) ++# define RBX_sig(p) ((p)->uc_mcontext.mc_rbx) ++# define RSP_sig(p) ((p)->uc_mcontext.mc_rsp) ++# define RBP_sig(p) ((p)->uc_mcontext.mc_rbp) ++# define RSI_sig(p) ((p)->uc_mcontext.mc_rsi) ++# define RDI_sig(p) ((p)->uc_mcontext.mc_rdi) ++# define R8_sig(p) ((p)->uc_mcontext.mc_r8) ++# define R9_sig(p) ((p)->uc_mcontext.mc_r9) ++# define R10_sig(p) ((p)->uc_mcontext.mc_r10) ++# define R11_sig(p) ((p)->uc_mcontext.mc_r11) ++# define R12_sig(p) ((p)->uc_mcontext.mc_r12) ++# define R13_sig(p) ((p)->uc_mcontext.mc_r13) ++# define R14_sig(p) ((p)->uc_mcontext.mc_r14) ++# define R15_sig(p) ((p)->uc_mcontext.mc_r15) ++#elif defined(XP_MACOSX) ++# define XMM_sig(p,i) ((p)->uc_mcontext->__fs.__fpu_xmm##i) ++# define EIP_sig(p) ((p)->uc_mcontext->__ss.__eip) ++# define RIP_sig(p) ((p)->uc_mcontext->__ss.__rip) ++# define RAX_sig(p) ((p)->uc_mcontext->__ss.__rax) ++# define RCX_sig(p) ((p)->uc_mcontext->__ss.__rcx) ++# define RDX_sig(p) ((p)->uc_mcontext->__ss.__rdx) ++# define RBX_sig(p) ((p)->uc_mcontext->__ss.__rbx) ++# define RSP_sig(p) ((p)->uc_mcontext->__ss.__rsp) ++# define RBP_sig(p) ((p)->uc_mcontext->__ss.__rbp) ++# define RSI_sig(p) ((p)->uc_mcontext->__ss.__rsi) ++# define RDI_sig(p) ((p)->uc_mcontext->__ss.__rdi) ++# define R8_sig(p) ((p)->uc_mcontext->__ss.__r8) ++# define R9_sig(p) ((p)->uc_mcontext->__ss.__r9) ++# define R10_sig(p) ((p)->uc_mcontext->__ss.__r10) ++# define R11_sig(p) ((p)->uc_mcontext->__ss.__r11) ++# define R12_sig(p) ((p)->uc_mcontext->__ss.__r12) ++# define R13_sig(p) ((p)->uc_mcontext->__ss.__r13) ++# define R14_sig(p) ((p)->uc_mcontext->__ss.__r14) ++# define R15_sig(p) ((p)->uc_mcontext->__ss.__r15) ++#else ++# error "Don't know how to read/write to the thread state via the mcontext_t." ++#endif + -+static void -+SetRegisterToCoercedUndefined(mcontext_t &context, bool isFloat32, AnyRegister reg) -+{ -+ if (reg.isFloat()) { -+ switch (reg.fpu().code()) { -+ case JSC::X86Registers::xmm0: SetXMMRegToNaN(isFloat32, fp_xmm(&context, 0)); break; -+ case JSC::X86Registers::xmm1: SetXMMRegToNaN(isFloat32, fp_xmm(&context, 1)); break; -+ case JSC::X86Registers::xmm2: SetXMMRegToNaN(isFloat32, fp_xmm(&context, 2)); break; -+ case JSC::X86Registers::xmm3: SetXMMRegToNaN(isFloat32, fp_xmm(&context, 3)); break; -+ case JSC::X86Registers::xmm4: SetXMMRegToNaN(isFloat32, fp_xmm(&context, 4)); break; -+ case JSC::X86Registers::xmm5: SetXMMRegToNaN(isFloat32, fp_xmm(&context, 5)); break; -+ case JSC::X86Registers::xmm6: SetXMMRegToNaN(isFloat32, fp_xmm(&context, 6)); break; -+ case JSC::X86Registers::xmm7: SetXMMRegToNaN(isFloat32, fp_xmm(&context, 7)); break; -+ case JSC::X86Registers::xmm8: SetXMMRegToNaN(isFloat32, fp_xmm(&context, 8)); break; -+ case JSC::X86Registers::xmm9: SetXMMRegToNaN(isFloat32, fp_xmm(&context, 9)); break; -+ case JSC::X86Registers::xmm10: SetXMMRegToNaN(isFloat32, fp_xmm(&context, 10)); break; -+ case JSC::X86Registers::xmm11: SetXMMRegToNaN(isFloat32, fp_xmm(&context, 11)); break; -+ case JSC::X86Registers::xmm12: SetXMMRegToNaN(isFloat32, fp_xmm(&context, 12)); break; -+ case JSC::X86Registers::xmm13: SetXMMRegToNaN(isFloat32, fp_xmm(&context, 13)); break; -+ case JSC::X86Registers::xmm14: SetXMMRegToNaN(isFloat32, fp_xmm(&context, 14)); break; -+ case JSC::X86Registers::xmm15: SetXMMRegToNaN(isFloat32, fp_xmm(&context, 15)); break; -+ default: MOZ_CRASH(); -+ } -+ } else { -+ switch (reg.gpr().code()) { -+ case JSC::X86Registers::eax: context.__gregs[_REG_RAX] = 0; break; -+ case JSC::X86Registers::ecx: context.__gregs[_REG_RCX] = 0; break; -+ case JSC::X86Registers::edx: context.__gregs[_REG_RDX] = 0; break; -+ case JSC::X86Registers::ebx: context.__gregs[_REG_RBX] = 0; break; -+ case JSC::X86Registers::esp: context.__gregs[_REG_RSP] = 0; break; -+ case JSC::X86Registers::ebp: context.__gregs[_REG_RBP] = 0; break; -+ case JSC::X86Registers::esi: context.__gregs[_REG_RSI] = 0; break; -+ case JSC::X86Registers::edi: context.__gregs[_REG_RDI] = 0; break; -+ case JSC::X86Registers::r8: context.__gregs[_REG_R8] = 0; break; -+ case JSC::X86Registers::r9: context.__gregs[_REG_R9] = 0; break; -+ case JSC::X86Registers::r10: context.__gregs[_REG_R10] = 0; break; -+ case JSC::X86Registers::r11: context.__gregs[_REG_R11] = 0; break; -+ case JSC::X86Registers::r12: context.__gregs[_REG_R12] = 0; break; -+ case JSC::X86Registers::r13: context.__gregs[_REG_R13] = 0; break; -+ case JSC::X86Registers::r14: context.__gregs[_REG_R14] = 0; break; -+ case JSC::X86Registers::r15: context.__gregs[_REG_R15] = 0; break; -+ default: MOZ_CRASH(); -+ } -+ } -+} -+# endif -+# elif defined(__DragonFly__) || defined(__FreeBSD__) -+# include <sys/ucontext.h> + // Prevent races trying to install the signal handlers. + #ifdef JS_THREADSAFE + # include "jslock.h" +@@ -142,66 +274,90 @@ LookupHeapAccess(const AsmJSModule &module, uint8_t *pc) + + # if defined(XP_WIN) + # include "jswin.h" ++# else ++# include <signal.h> ++# include <sys/mman.h> ++# endif + -+static uint8_t ** -+ContextToPC(mcontext_t &context) -+{ -+# if defined(JS_CPU_X86) -+ JS_STATIC_ASSERT(sizeof(context.mc_eip) == sizeof(void*)); -+ return reinterpret_cast<uint8_t**>(&context.mc_eip); -+# else -+ JS_STATIC_ASSERT(sizeof(context.mc_rip) == sizeof(void*)); -+ return reinterpret_cast<uint8_t**>(&context.mc_rip); -+# endif -+} ++# if defined(__FreeBSD__) ++# include <sys/ucontext.h> // for ucontext_t, mcontext_t ++# endif + -+# if defined(JS_CPU_X64) -+# include <machine/fpu.h> -+# define mc_xmm(mc,i) (&((struct savefpu *)(mc)->mc_fpstate)->sv_xmm[i]) ++# if defined(JS_CPU_X64) ++# if defined(__DragonFly__) ++# include <machine/npx.h> // for union savefpu ++# elif defined(__FreeBSD__) ++# include <machine/fpu.h> // for struct savefpu ++# endif ++# endif + -+static void -+SetRegisterToCoercedUndefined(mcontext_t &context, bool isFloat32, AnyRegister reg) -+{ -+ if (reg.isFloat()) { -+ switch (reg.fpu().code()) { -+ case JSC::X86Registers::xmm0: SetXMMRegToNaN(isFloat32, mc_xmm(&context, 0)); break; -+ case JSC::X86Registers::xmm1: SetXMMRegToNaN(isFloat32, mc_xmm(&context, 1)); break; -+ case JSC::X86Registers::xmm2: SetXMMRegToNaN(isFloat32, mc_xmm(&context, 2)); break; -+ case JSC::X86Registers::xmm3: SetXMMRegToNaN(isFloat32, mc_xmm(&context, 3)); break; -+ case JSC::X86Registers::xmm4: SetXMMRegToNaN(isFloat32, mc_xmm(&context, 4)); break; -+ case JSC::X86Registers::xmm5: SetXMMRegToNaN(isFloat32, mc_xmm(&context, 5)); break; -+ case JSC::X86Registers::xmm6: SetXMMRegToNaN(isFloat32, mc_xmm(&context, 6)); break; -+ case JSC::X86Registers::xmm7: SetXMMRegToNaN(isFloat32, mc_xmm(&context, 7)); break; -+ case JSC::X86Registers::xmm8: SetXMMRegToNaN(isFloat32, mc_xmm(&context, 8)); break; -+ case JSC::X86Registers::xmm9: SetXMMRegToNaN(isFloat32, mc_xmm(&context, 9)); break; -+ case JSC::X86Registers::xmm10: SetXMMRegToNaN(isFloat32, mc_xmm(&context, 10)); break; -+ case JSC::X86Registers::xmm11: SetXMMRegToNaN(isFloat32, mc_xmm(&context, 11)); break; -+ case JSC::X86Registers::xmm12: SetXMMRegToNaN(isFloat32, mc_xmm(&context, 12)); break; -+ case JSC::X86Registers::xmm13: SetXMMRegToNaN(isFloat32, mc_xmm(&context, 13)); break; -+ case JSC::X86Registers::xmm14: SetXMMRegToNaN(isFloat32, mc_xmm(&context, 14)); break; -+ case JSC::X86Registers::xmm15: SetXMMRegToNaN(isFloat32, mc_xmm(&context, 15)); break; -+ default: MOZ_CRASH(); -+ } -+ } else { -+ switch (reg.gpr().code()) { -+ case JSC::X86Registers::eax: context.mc_rax = 0; break; -+ case JSC::X86Registers::ecx: context.mc_rcx = 0; break; -+ case JSC::X86Registers::edx: context.mc_rdx = 0; break; -+ case JSC::X86Registers::ebx: context.mc_rbx = 0; break; -+ case JSC::X86Registers::esp: context.mc_rsp = 0; break; -+ case JSC::X86Registers::ebp: context.mc_rbp = 0; break; -+ case JSC::X86Registers::esi: context.mc_rsi = 0; break; -+ case JSC::X86Registers::edi: context.mc_rdi = 0; break; -+ case JSC::X86Registers::r8: context.mc_r8 = 0; break; -+ case JSC::X86Registers::r9: context.mc_r9 = 0; break; -+ case JSC::X86Registers::r10: context.mc_r10 = 0; break; -+ case JSC::X86Registers::r11: context.mc_r11 = 0; break; -+ case JSC::X86Registers::r12: context.mc_r12 = 0; break; -+ case JSC::X86Registers::r13: context.mc_r13 = 0; break; -+ case JSC::X86Registers::r14: context.mc_r14 = 0; break; -+ case JSC::X86Registers::r15: context.mc_r15 = 0; break; -+ default: MOZ_CRASH(); -+ } -+ } -+} -+# endif - # elif defined(XP_MACOSX) ++# if defined(__OpenBSD__) ++# define CONTEXT sigcontext_t ++# elif !defined(XP_WIN) ++# define CONTEXT ucontext_t ++# endif + static uint8_t ** - ContextToPC(mcontext_t context) +-ContextToPC(PCONTEXT context) ++ContextToPC(CONTEXT *context) + { +-# if defined(JS_CPU_X64) +- JS_STATIC_ASSERT(sizeof(context->Rip) == sizeof(void*)); +- return reinterpret_cast<uint8_t**>(&context->Rip); +-# else +- JS_STATIC_ASSERT(sizeof(context->Eip) == sizeof(void*)); +- return reinterpret_cast<uint8_t**>(&context->Eip); +-# endif ++# if defined(JS_CPU_X86) ++ JS_STATIC_ASSERT(sizeof(EIP_sig(context)) == sizeof(void*)); ++ return reinterpret_cast<uint8_t**>(&EIP_sig(context)); ++# else ++ JS_STATIC_ASSERT(sizeof(RIP_sig(context)) == sizeof(void*)); ++ return reinterpret_cast<uint8_t**>(&RIP_sig(context)); ++# endif + } + +-# if defined(JS_CPU_X64) ++# if defined(JS_CPU_X64) + static void + SetRegisterToCoercedUndefined(CONTEXT *context, bool isFloat32, AnyRegister reg) + { + if (reg.isFloat()) { + switch (reg.fpu().code()) { +- case JSC::X86Registers::xmm0: SetXMMRegToNaN(isFloat32, &context->Xmm0); break; +- case JSC::X86Registers::xmm1: SetXMMRegToNaN(isFloat32, &context->Xmm1); break; +- case JSC::X86Registers::xmm2: SetXMMRegToNaN(isFloat32, &context->Xmm2); break; +- case JSC::X86Registers::xmm3: SetXMMRegToNaN(isFloat32, &context->Xmm3); break; +- case JSC::X86Registers::xmm4: SetXMMRegToNaN(isFloat32, &context->Xmm4); break; +- case JSC::X86Registers::xmm5: SetXMMRegToNaN(isFloat32, &context->Xmm5); break; +- case JSC::X86Registers::xmm6: SetXMMRegToNaN(isFloat32, &context->Xmm6); break; +- case JSC::X86Registers::xmm7: SetXMMRegToNaN(isFloat32, &context->Xmm7); break; +- case JSC::X86Registers::xmm8: SetXMMRegToNaN(isFloat32, &context->Xmm8); break; +- case JSC::X86Registers::xmm9: SetXMMRegToNaN(isFloat32, &context->Xmm9); break; +- case JSC::X86Registers::xmm10: SetXMMRegToNaN(isFloat32, &context->Xmm10); break; +- case JSC::X86Registers::xmm11: SetXMMRegToNaN(isFloat32, &context->Xmm11); break; +- case JSC::X86Registers::xmm12: SetXMMRegToNaN(isFloat32, &context->Xmm12); break; +- case JSC::X86Registers::xmm13: SetXMMRegToNaN(isFloat32, &context->Xmm13); break; +- case JSC::X86Registers::xmm14: SetXMMRegToNaN(isFloat32, &context->Xmm14); break; +- case JSC::X86Registers::xmm15: SetXMMRegToNaN(isFloat32, &context->Xmm15); break; ++ case JSC::X86Registers::xmm0: SetXMMRegToNaN(isFloat32, &XMM_sig(context, 0)); break; ++ case JSC::X86Registers::xmm1: SetXMMRegToNaN(isFloat32, &XMM_sig(context, 1)); break; ++ case JSC::X86Registers::xmm2: SetXMMRegToNaN(isFloat32, &XMM_sig(context, 2)); break; ++ case JSC::X86Registers::xmm3: SetXMMRegToNaN(isFloat32, &XMM_sig(context, 3)); break; ++ case JSC::X86Registers::xmm4: SetXMMRegToNaN(isFloat32, &XMM_sig(context, 4)); break; ++ case JSC::X86Registers::xmm5: SetXMMRegToNaN(isFloat32, &XMM_sig(context, 5)); break; ++ case JSC::X86Registers::xmm6: SetXMMRegToNaN(isFloat32, &XMM_sig(context, 6)); break; ++ case JSC::X86Registers::xmm7: SetXMMRegToNaN(isFloat32, &XMM_sig(context, 7)); break; ++ case JSC::X86Registers::xmm8: SetXMMRegToNaN(isFloat32, &XMM_sig(context, 8)); break; ++ case JSC::X86Registers::xmm9: SetXMMRegToNaN(isFloat32, &XMM_sig(context, 9)); break; ++ case JSC::X86Registers::xmm10: SetXMMRegToNaN(isFloat32, &XMM_sig(context, 10)); break; ++ case JSC::X86Registers::xmm11: SetXMMRegToNaN(isFloat32, &XMM_sig(context, 11)); break; ++ case JSC::X86Registers::xmm12: SetXMMRegToNaN(isFloat32, &XMM_sig(context, 12)); break; ++ case JSC::X86Registers::xmm13: SetXMMRegToNaN(isFloat32, &XMM_sig(context, 13)); break; ++ case JSC::X86Registers::xmm14: SetXMMRegToNaN(isFloat32, &XMM_sig(context, 14)); break; ++ case JSC::X86Registers::xmm15: SetXMMRegToNaN(isFloat32, &XMM_sig(context, 15)); break; + default: MOZ_CRASH(); + } + } else { + switch (reg.gpr().code()) { +- case JSC::X86Registers::eax: context->Rax = 0; break; +- case JSC::X86Registers::ecx: context->Rcx = 0; break; +- case JSC::X86Registers::edx: context->Rdx = 0; break; +- case JSC::X86Registers::ebx: context->Rbx = 0; break; +- case JSC::X86Registers::esp: context->Rsp = 0; break; +- case JSC::X86Registers::ebp: context->Rbp = 0; break; +- case JSC::X86Registers::esi: context->Rsi = 0; break; +- case JSC::X86Registers::edi: context->Rdi = 0; break; +- case JSC::X86Registers::r8: context->R8 = 0; break; +- case JSC::X86Registers::r9: context->R9 = 0; break; +- case JSC::X86Registers::r10: context->R10 = 0; break; +- case JSC::X86Registers::r11: context->R11 = 0; break; +- case JSC::X86Registers::r12: context->R12 = 0; break; +- case JSC::X86Registers::r13: context->R13 = 0; break; +- case JSC::X86Registers::r14: context->R14 = 0; break; +- case JSC::X86Registers::r15: context->R15 = 0; break; ++ case JSC::X86Registers::eax: RAX_sig(context) = 0; break; ++ case JSC::X86Registers::ecx: RCX_sig(context) = 0; break; ++ case JSC::X86Registers::edx: RDX_sig(context) = 0; break; ++ case JSC::X86Registers::ebx: RBX_sig(context) = 0; break; ++ case JSC::X86Registers::esp: RSP_sig(context) = 0; break; ++ case JSC::X86Registers::ebp: RBP_sig(context) = 0; break; ++ case JSC::X86Registers::esi: RSI_sig(context) = 0; break; ++ case JSC::X86Registers::edi: RDI_sig(context) = 0; break; ++ case JSC::X86Registers::r8: R8_sig(context) = 0; break; ++ case JSC::X86Registers::r9: R9_sig(context) = 0; break; ++ case JSC::X86Registers::r10: R10_sig(context) = 0; break; ++ case JSC::X86Registers::r11: R11_sig(context) = 0; break; ++ case JSC::X86Registers::r12: R12_sig(context) = 0; break; ++ case JSC::X86Registers::r13: R13_sig(context) = 0; break; ++ case JSC::X86Registers::r14: R14_sig(context) = 0; break; ++ case JSC::X86Registers::r15: R15_sig(context) = 0; break; + default: MOZ_CRASH(); + } + } + } +-# endif ++# endif ++ ++# if defined(XP_WIN) + + static bool + HandleException(PEXCEPTION_POINTERS exception) +@@ -286,133 +442,7 @@ AsmJSExceptionHandler(LPEXCEPTION_POINTERS exception) + return EXCEPTION_CONTINUE_SEARCH; + } + +-# else // If not Windows, assume Unix +-# include <signal.h> +-# include <sys/mman.h> +- +-// Unfortunately, we still need OS-specific code to read/write to the thread +-// state via the mcontext_t. +-# if defined(__linux__) +-static uint8_t ** +-ContextToPC(mcontext_t &context) +-{ +-# if defined(JS_CPU_X86) +- JS_STATIC_ASSERT(sizeof(context.gregs[REG_EIP]) == sizeof(void*)); +- return reinterpret_cast<uint8_t**>(&context.gregs[REG_EIP]); +-# else +- JS_STATIC_ASSERT(sizeof(context.gregs[REG_RIP]) == sizeof(void*)); +- return reinterpret_cast<uint8_t**>(&context.gregs[REG_RIP]); +-# endif +-} +- +-# if defined(JS_CPU_X64) +-static void +-SetRegisterToCoercedUndefined(mcontext_t &context, bool isFloat32, AnyRegister reg) +-{ +- if (reg.isFloat()) { +- switch (reg.fpu().code()) { +- case JSC::X86Registers::xmm0: SetXMMRegToNaN(isFloat32, &context.fpregs->_xmm[0]); break; +- case JSC::X86Registers::xmm1: SetXMMRegToNaN(isFloat32, &context.fpregs->_xmm[1]); break; +- case JSC::X86Registers::xmm2: SetXMMRegToNaN(isFloat32, &context.fpregs->_xmm[2]); break; +- case JSC::X86Registers::xmm3: SetXMMRegToNaN(isFloat32, &context.fpregs->_xmm[3]); break; +- case JSC::X86Registers::xmm4: SetXMMRegToNaN(isFloat32, &context.fpregs->_xmm[4]); break; +- case JSC::X86Registers::xmm5: SetXMMRegToNaN(isFloat32, &context.fpregs->_xmm[5]); break; +- case JSC::X86Registers::xmm6: SetXMMRegToNaN(isFloat32, &context.fpregs->_xmm[6]); break; +- case JSC::X86Registers::xmm7: SetXMMRegToNaN(isFloat32, &context.fpregs->_xmm[7]); break; +- case JSC::X86Registers::xmm8: SetXMMRegToNaN(isFloat32, &context.fpregs->_xmm[8]); break; +- case JSC::X86Registers::xmm9: SetXMMRegToNaN(isFloat32, &context.fpregs->_xmm[9]); break; +- case JSC::X86Registers::xmm10: SetXMMRegToNaN(isFloat32, &context.fpregs->_xmm[10]); break; +- case JSC::X86Registers::xmm11: SetXMMRegToNaN(isFloat32, &context.fpregs->_xmm[11]); break; +- case JSC::X86Registers::xmm12: SetXMMRegToNaN(isFloat32, &context.fpregs->_xmm[12]); break; +- case JSC::X86Registers::xmm13: SetXMMRegToNaN(isFloat32, &context.fpregs->_xmm[13]); break; +- case JSC::X86Registers::xmm14: SetXMMRegToNaN(isFloat32, &context.fpregs->_xmm[14]); break; +- case JSC::X86Registers::xmm15: SetXMMRegToNaN(isFloat32, &context.fpregs->_xmm[15]); break; +- default: MOZ_CRASH(); +- } +- } else { +- switch (reg.gpr().code()) { +- case JSC::X86Registers::eax: context.gregs[REG_RAX] = 0; break; +- case JSC::X86Registers::ecx: context.gregs[REG_RCX] = 0; break; +- case JSC::X86Registers::edx: context.gregs[REG_RDX] = 0; break; +- case JSC::X86Registers::ebx: context.gregs[REG_RBX] = 0; break; +- case JSC::X86Registers::esp: context.gregs[REG_RSP] = 0; break; +- case JSC::X86Registers::ebp: context.gregs[REG_RBP] = 0; break; +- case JSC::X86Registers::esi: context.gregs[REG_RSI] = 0; break; +- case JSC::X86Registers::edi: context.gregs[REG_RDI] = 0; break; +- case JSC::X86Registers::r8: context.gregs[REG_R8] = 0; break; +- case JSC::X86Registers::r9: context.gregs[REG_R9] = 0; break; +- case JSC::X86Registers::r10: context.gregs[REG_R10] = 0; break; +- case JSC::X86Registers::r11: context.gregs[REG_R11] = 0; break; +- case JSC::X86Registers::r12: context.gregs[REG_R12] = 0; break; +- case JSC::X86Registers::r13: context.gregs[REG_R13] = 0; break; +- case JSC::X86Registers::r14: context.gregs[REG_R14] = 0; break; +- case JSC::X86Registers::r15: context.gregs[REG_R15] = 0; break; +- default: MOZ_CRASH(); +- } +- } +-} +-# endif +-# elif defined(XP_MACOSX) +-static uint8_t ** +-ContextToPC(mcontext_t context) +-{ +-# if defined(JS_CPU_X86) +- JS_STATIC_ASSERT(sizeof(context->__ss.__eip) == sizeof(void*)); +- return reinterpret_cast<uint8_t **>(&context->__ss.__eip); +-# else +- JS_STATIC_ASSERT(sizeof(context->__ss.__rip) == sizeof(void*)); +- return reinterpret_cast<uint8_t **>(&context->__ss.__rip); +-# endif +-} +- +-# if defined(JS_CPU_X64) +-static void +-SetRegisterToCoercedUndefined(mcontext_t &context, bool isFloat32, AnyRegister reg) +-{ +- if (reg.isFloat()) { +- switch (reg.fpu().code()) { +- case JSC::X86Registers::xmm0: SetXMMRegToNaN(isFloat32, &context->__fs.__fpu_xmm0); break; +- case JSC::X86Registers::xmm1: SetXMMRegToNaN(isFloat32, &context->__fs.__fpu_xmm1); break; +- case JSC::X86Registers::xmm2: SetXMMRegToNaN(isFloat32, &context->__fs.__fpu_xmm2); break; +- case JSC::X86Registers::xmm3: SetXMMRegToNaN(isFloat32, &context->__fs.__fpu_xmm3); break; +- case JSC::X86Registers::xmm4: SetXMMRegToNaN(isFloat32, &context->__fs.__fpu_xmm4); break; +- case JSC::X86Registers::xmm5: SetXMMRegToNaN(isFloat32, &context->__fs.__fpu_xmm5); break; +- case JSC::X86Registers::xmm6: SetXMMRegToNaN(isFloat32, &context->__fs.__fpu_xmm6); break; +- case JSC::X86Registers::xmm7: SetXMMRegToNaN(isFloat32, &context->__fs.__fpu_xmm7); break; +- case JSC::X86Registers::xmm8: SetXMMRegToNaN(isFloat32, &context->__fs.__fpu_xmm8); break; +- case JSC::X86Registers::xmm9: SetXMMRegToNaN(isFloat32, &context->__fs.__fpu_xmm9); break; +- case JSC::X86Registers::xmm10: SetXMMRegToNaN(isFloat32, &context->__fs.__fpu_xmm10); break; +- case JSC::X86Registers::xmm11: SetXMMRegToNaN(isFloat32, &context->__fs.__fpu_xmm11); break; +- case JSC::X86Registers::xmm12: SetXMMRegToNaN(isFloat32, &context->__fs.__fpu_xmm12); break; +- case JSC::X86Registers::xmm13: SetXMMRegToNaN(isFloat32, &context->__fs.__fpu_xmm13); break; +- case JSC::X86Registers::xmm14: SetXMMRegToNaN(isFloat32, &context->__fs.__fpu_xmm14); break; +- case JSC::X86Registers::xmm15: SetXMMRegToNaN(isFloat32, &context->__fs.__fpu_xmm15); break; +- default: MOZ_CRASH(); +- } +- } else { +- switch (reg.gpr().code()) { +- case JSC::X86Registers::eax: context->__ss.__rax = 0; break; +- case JSC::X86Registers::ecx: context->__ss.__rcx = 0; break; +- case JSC::X86Registers::edx: context->__ss.__rdx = 0; break; +- case JSC::X86Registers::ebx: context->__ss.__rbx = 0; break; +- case JSC::X86Registers::esp: context->__ss.__rsp = 0; break; +- case JSC::X86Registers::ebp: context->__ss.__rbp = 0; break; +- case JSC::X86Registers::esi: context->__ss.__rsi = 0; break; +- case JSC::X86Registers::edi: context->__ss.__rdi = 0; break; +- case JSC::X86Registers::r8: context->__ss.__r8 = 0; break; +- case JSC::X86Registers::r9: context->__ss.__r9 = 0; break; +- case JSC::X86Registers::r10: context->__ss.__r10 = 0; break; +- case JSC::X86Registers::r11: context->__ss.__r11 = 0; break; +- case JSC::X86Registers::r12: context->__ss.__r12 = 0; break; +- case JSC::X86Registers::r13: context->__ss.__r13 = 0; break; +- case JSC::X86Registers::r14: context->__ss.__r14 = 0; break; +- case JSC::X86Registers::r15: context->__ss.__r15 = 0; break; +- default: MOZ_CRASH(); +- } +- } +-} +-# endif +-# endif // end of OS-specific mcontext accessors ++# else // assume XP_UNIX + + // Be very cautious and default to not handling; we don't want to accidentally + // silence real crashes from real bugs. +@@ -423,7 +453,7 @@ HandleSignal(int signum, siginfo_t *info, void *ctx) + if (!activation) + return false; + +- mcontext_t &context = reinterpret_cast<ucontext_t*>(ctx)->uc_mcontext; ++ CONTEXT *context = (CONTEXT *)ctx; + uint8_t **ppc = ContextToPC(context); + uint8_t *pc = *ppc; + diff --git js/src/ion/x64/Assembler-x64.cpp js/src/ion/x64/Assembler-x64.cpp -index 9984777..0ab0891 100644 +index 9984777..8b06a55 100644 --- js/src/ion/x64/Assembler-x64.cpp +++ js/src/ion/x64/Assembler-x64.cpp @@ -49,7 +49,7 @@ ABIArgGenerator::next(MIRType type) @@ -161,7 +443,16 @@ } return current_; -#elif defined(XP_MACOSX) || defined(__linux__) -+#elif defined(XP_MACOSX) || defined(__linux__) || defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) ++#else // assume XP_UNIX switch (type) { case MIRType_Int32: case MIRType_Pointer: +@@ -72,8 +72,6 @@ ABIArgGenerator::next(MIRType type) + JS_NOT_REACHED("Unexpected argument type"); + } + return current_; +-#else +-# error "Missing ABI" + #endif + } +
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201303192148.r2JLmdq4020438>