Bug 1287671 - Simplify jscpucfg.h. r=njn
☠☠ backed out by 114ae8fb1a77 ☠ ☠
authorMike Hommey <mh+mozilla@glandium.org>
Tue, 19 Jul 2016 14:54:37 +0900
changeset 316369 50f9b4a613b0c9a9bcd659f856e5d4df0e9d3ae0
parent 316368 b3947e0eeeb838daf9b1c9d809113aaa49bcfc25
child 316370 1c4f0a3784f13790876a1eac902d63fa8b9569d2
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)
reviewersnjn
bugs1287671
milestone52.0a1
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
Bug 1287671 - Simplify jscpucfg.h. r=njn Endianness is figured out in mfbt/EndianUtils.h, which can be reused. Apart from endianness, jscpucfg.h is defining JS_HAVE_LONG_LONG, which isn't used anywhere, defines a macro for the Watcom C/C++ compiler, and tries to figure out stack growth direction. The first is obviously unnecessary. The second is not useful now that building JS requires a C++11-capable compiler, which the Watcom C/C++ compiler isn't. The latter, however, is still relevant, but the check based on sys/isa_def.h is, afaict, only relevant on HP-UX on PA-RISC, which is already covered by the check for __hppa. Consequently, the various checks setting JS_HAVE_header_H defines can all be removed.
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,28 +43,16 @@
 #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,127 +2,25 @@
  * 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
 
-#define JS_HAVE_LONG_LONG
-
-#if defined(_WIN64)
+#include "mozilla/EndianUtils.h"
 
-# 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(__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
+#elif defined(MOZ_BIG_ENDIAN)
+# undef  IS_LITTLE_ENDIAN
 # define IS_BIG_ENDIAN 1
-
-#else /* !defined(__sparc) && !defined(__sparc__) && ... */
+#else
 # 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,31 +994,16 @@ 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