author | Iris Hsiao <ihsiao@mozilla.com> |
Tue, 04 Oct 2016 17:05:18 +0800 | |
changeset 316375 | 114ae8fb1a77e97ef7415a4264928960a8e8c1b7 |
parent 316374 | e548982279e20c4d863b454f9c115f0138a2c07f |
child 316376 | b60523131a1cf1265a08e7d88f4f2942b70a3659 |
push id | 30770 |
push user | kwierso@gmail.com |
push date | Wed, 05 Oct 2016 00:00:48 +0000 |
treeherder | mozilla-central@3470e326025c [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
bugs | 1287671 |
milestone | 52.0a1 |
backs out | 50f9b4a613b0c9a9bcd659f856e5d4df0e9d3ae0 |
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
|
--- 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