Backed out changeset 50f9b4a613b0 (bug 1287671)
authorIris Hsiao <ihsiao@mozilla.com>
Tue, 04 Oct 2016 17:05:18 +0800
changeset 316375 114ae8fb1a77e97ef7415a4264928960a8e8c1b7
parent 316374 e548982279e20c4d863b454f9c115f0138a2c07f
child 316376 b60523131a1cf1265a08e7d88f4f2942b70a3659
push id30770
push userkwierso@gmail.com
push dateWed, 05 Oct 2016 00:00:48 +0000
treeherdermozilla-central@3470e326025c [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs1287671
milestone52.0a1
backs out50f9b4a613b0c9a9bcd659f856e5d4df0e9d3ae0
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Backed out changeset 50f9b4a613b0 (bug 1287671) CLOSED TREE
js/src/js-config.h.in
js/src/jscpucfg.h
js/src/old-configure.in
--- a/js/src/js-config.h.in
+++ b/js/src/js-config.h.in
@@ -43,16 +43,28 @@
 #undef JS_GC_ZEAL
 
 /* Define to 1 if SpiderMonkey should use small chunks. */
 #undef JS_GC_SMALL_CHUNK_SIZE
 
 /* Define to 1 to perform extra assertions and heap poisoning. */
 #undef JS_CRASH_DIAGNOSTICS
 
+/* Define to 1 if the <endian.h> header is present and
+   useable.  See jscpucfg.h.  */
+#undef JS_HAVE_ENDIAN_H
+
+/* Define to 1 if the <machine/endian.h> header is present and
+   useable.  See jscpucfg.h.  */
+#undef JS_HAVE_MACHINE_ENDIAN_H
+
+/* Define to 1 if the <sys/isa_defs.h> 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
 
 /* Define to 1 if SpiderMonkey is in PUNBOX64 mode. */
 #undef JS_PUNBOX64
 
 /* MOZILLA JSAPI version number components */
 #undef MOZJS_MAJOR_VERSION
--- a/js/src/jscpucfg.h
+++ b/js/src/jscpucfg.h
@@ -2,25 +2,127 @@
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef jscpucfg_h
 #define jscpucfg_h
 
-#include "mozilla/EndianUtils.h"
+#define JS_HAVE_LONG_LONG
+
+#if defined(_WIN64)
 
-#if defined(MOZ_LITTLE_ENDIAN)
+# 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
+
 # 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 <endian.h>
+
+/*
+ * Historically, OSes providing <endian.h> only defined
+ * __BYTE_ORDER to either __LITTLE_ENDIAN or __BIG_ENDIAN.
+ * The Austin group decided to standardise <endian.h> 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 <sys/types.h>
+# include <machine/endian.h>
+
+# 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 <sys/isa_defs.h>
+
+# 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
 
 #ifndef JS_STACK_GROWTH_DIRECTION
 # ifdef __hppa
 #  define JS_STACK_GROWTH_DIRECTION (1)
 # else
 #  define JS_STACK_GROWTH_DIRECTION (-1)
--- a/js/src/old-configure.in
+++ b/js/src/old-configure.in
@@ -994,16 +994,31 @@ AC_CACHE_VAL(ac_cv_type_ssize_t,
                  [ac_cv_type_ssize_t=false])])
 if test "$ac_cv_type_ssize_t" = true ; then
   AC_DEFINE(HAVE_SSIZE_T)
   AC_MSG_RESULT(yes)
 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 <sys/types.h>])
+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
 
 dnl Check for .hidden assembler directive and visibility attribute.
 dnl Borrowed from glibc configure.in
 dnl ===============================================================
 if test "$GNU_CC" -a "$OS_TARGET" != WINNT; then