From 0b8af653c35a755d69460967e319855f6d77809f Mon Sep 17 00:00:00 2001 From: Iris Hsiao Date: Tue, 4 Oct 2016 17:05:18 +0800 Subject: [PATCH] Backed out changeset 50f9b4a613b0 (bug 1287671) CLOSED TREE --- js/src/js-config.h.in | 12 +++++ js/src/jscpucfg.h | 112 ++++++++++++++++++++++++++++++++++++++-- js/src/old-configure.in | 15 ++++++ 3 files changed, 134 insertions(+), 5 deletions(-) diff --git a/js/src/js-config.h.in b/js/src/js-config.h.in index f2ce93e12212..f86b2d800c01 100644 --- a/js/src/js-config.h.in +++ b/js/src/js-config.h.in @@ -48,6 +48,18 @@ /* Define to 1 to perform extra assertions and heap poisoning. */ #undef JS_CRASH_DIAGNOSTICS +/* Define to 1 if the header is present and + useable. See jscpucfg.h. */ +#undef JS_HAVE_ENDIAN_H + +/* Define to 1 if the header is present and + useable. See jscpucfg.h. */ +#undef JS_HAVE_MACHINE_ENDIAN_H + +/* Define to 1 if the header is present and + useable. See jscpucfg.h. */ +#undef JS_HAVE_SYS_ISA_DEFS_H + /* Define to 1 if SpiderMonkey is in NUNBOX32 mode. */ #undef JS_NUNBOX32 diff --git a/js/src/jscpucfg.h b/js/src/jscpucfg.h index 660187ca60cf..a641e523ba99 100644 --- a/js/src/jscpucfg.h +++ b/js/src/jscpucfg.h @@ -7,15 +7,117 @@ #ifndef jscpucfg_h #define jscpucfg_h -#include "mozilla/EndianUtils.h" +#define JS_HAVE_LONG_LONG + +#if defined(_WIN64) + +# if defined(_M_X64) || defined(_M_AMD64) || defined(_AMD64_) +# define IS_LITTLE_ENDIAN 1 +# undef IS_BIG_ENDIAN +# 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) + +# ifdef __WATCOMC__ +# define HAVE_VA_LIST_AS_ARRAY 1 +# endif -#if defined(MOZ_LITTLE_ENDIAN) # define IS_LITTLE_ENDIAN 1 # undef IS_BIG_ENDIAN -#elif defined(MOZ_BIG_ENDIAN) -# undef IS_LITTLE_ENDIAN + +#elif defined(__APPLE__) || defined(__powerpc__) || defined(__ppc__) +# if __LITTLE_ENDIAN__ +# define IS_LITTLE_ENDIAN 1 +# undef IS_BIG_ENDIAN +# elif __BIG_ENDIAN__ +# undef IS_LITTLE_ENDIAN +# define IS_BIG_ENDIAN 1 +# endif + +#elif defined(JS_HAVE_ENDIAN_H) +# include + +/* + * Historically, OSes providing only defined + * __BYTE_ORDER to either __LITTLE_ENDIAN or __BIG_ENDIAN. + * The Austin group decided to standardise in + * POSIX around 2011, expecting it to provide a BYTE_ORDER + * #define set to either LITTLE_ENDIAN or BIG_ENDIAN. We + * should try to cope with both possibilities here. + */ + +# if defined(__BYTE_ORDER) || defined(BYTE_ORDER) +# if defined(__BYTE_ORDER) +# if __BYTE_ORDER == __LITTLE_ENDIAN +# define IS_LITTLE_ENDIAN 1 +# undef IS_BIG_ENDIAN +# elif __BYTE_ORDER == __BIG_ENDIAN +# undef IS_LITTLE_ENDIAN +# define IS_BIG_ENDIAN 1 +# endif +# endif +# if defined(BYTE_ORDER) +# if BYTE_ORDER == LITTLE_ENDIAN +# define IS_LITTLE_ENDIAN 1 +# undef IS_BIG_ENDIAN +# elif BYTE_ORDER == BIG_ENDIAN +# undef IS_LITTLE_ENDIAN +# define IS_BIG_ENDIAN 1 +# endif +# endif +# else /* !defined(__BYTE_ORDER) */ +# error "endian.h does not define __BYTE_ORDER nor BYTE_ORDER. Cannot determine endianness." +# endif + +/* BSDs */ +#elif defined(JS_HAVE_MACHINE_ENDIAN_H) +# include +# include + +# if defined(_BYTE_ORDER) +# if _BYTE_ORDER == _LITTLE_ENDIAN +# define IS_LITTLE_ENDIAN 1 +# undef IS_BIG_ENDIAN +# elif _BYTE_ORDER == _BIG_ENDIAN +# undef IS_LITTLE_ENDIAN +# define IS_BIG_ENDIAN 1 +# endif +# else /* !defined(_BYTE_ORDER) */ +# error "machine/endian.h does not define _BYTE_ORDER. Cannot determine endianness." +# endif + +#elif defined(JS_HAVE_SYS_ISA_DEFS_H) +# include + +# if defined(_BIG_ENDIAN) +# undef IS_LITTLE_ENDIAN +# define IS_BIG_ENDIAN 1 +# elif defined(_LITTLE_ENDIAN) +# define IS_LITTLE_ENDIAN 1 +# undef IS_BIG_ENDIAN +# else /* !defined(_LITTLE_ENDIAN) */ +# error "sys/isa_defs.h does not define _BIG_ENDIAN or _LITTLE_ENDIAN. Cannot determine endianness." +# endif +# if !defined(JS_STACK_GROWTH_DIRECTION) +# if defined(_STACK_GROWS_UPWARD) +# define JS_STACK_GROWTH_DIRECTION (1) +# elif defined(_STACK_GROWS_DOWNWARD) +# define JS_STACK_GROWTH_DIRECTION (-1) +# endif +# endif + +#elif defined(__sparc) || defined(__sparc__) || \ + defined(_POWER) || defined(__hppa) || \ + defined(_MIPSEB) || defined(_BIG_ENDIAN) +/* IA64 running HP-UX will have _BIG_ENDIAN defined. + * IA64 running Linux will have endian.h and be handled above. + */ +# undef IS_LITTLE_ENDIAN # define IS_BIG_ENDIAN 1 -#else + +#else /* !defined(__sparc) && !defined(__sparc__) && ... */ # error "Cannot determine endianness of your platform. Please add support to jscpucfg.h." #endif diff --git a/js/src/old-configure.in b/js/src/old-configure.in index 712a1cf858fb..8fb4c96f01e8 100644 --- a/js/src/old-configure.in +++ b/js/src/old-configure.in @@ -999,6 +999,21 @@ else AC_MSG_RESULT(no) fi +MOZ_CHECK_HEADERS(endian.h) +if test "$ac_cv_header_endian_h" = yes; then + AC_DEFINE(JS_HAVE_ENDIAN_H) +fi + +MOZ_CHECK_HEADERS([machine/endian.h],[],[],[#include ]) +if test "$ac_cv_header_machine_endian_h" = yes; then + AC_DEFINE(JS_HAVE_MACHINE_ENDIAN_H) +fi + +MOZ_CHECK_HEADERS(sys/isa_defs.h) +if test "$ac_cv_header_sys_isa_defs_h" = yes; then + AC_DEFINE(JS_HAVE_SYS_ISA_DEFS_H) +fi + AC_LANG_CPLUSPLUS MOZ_CXX11