Changeset 225040 in webkit


Ignore:
Timestamp:
Nov 19, 2017, 5:41:20 PM (8 years ago)
Author:
Yusuke Suzuki
Message:

Add CPU(UNKNOWN) to cover all the unknown CPU types
https://bugs.webkit.org/show_bug.cgi?id=179243

Reviewed by JF Bastien.

.:

Drop SH4, S390, and S390X explicit support. They are handled as CPU(UNKNOWN).

  • CMakeLists.txt:

Source/JavaScriptCore:

  • CMakeLists.txt:

Source/WTF:

This patch adds a new CPU type, CPU(UNKNOWN) to cover all the unknown CPUs.
This CPU architecture tells conservative assumption to make JSC work on all
the unknown generic CPUs. And we make several CPUs (ALPHA, SH4, S390, S390X, IA64, IA64_32)
UNKNOWN.

We also make InlineASM available only for !CPU(UNKNOWN). In an unknown CPU, inline asm is not useful.

And we also introduce a generic way to detect 64bit pointer environment by using
SIZEOF_POINTER predefined macro, or UINTPTR_MAX > UINT32_MAX.

  • wtf/InlineASM.h:
  • wtf/Platform.h:
  • wtf/dtoa/utils.h:
Location:
trunk
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/CMakeLists.txt

    r224226 r225040  
    8181elseif (LOWERCASE_CMAKE_SYSTEM_PROCESSOR MATCHES "^aarch64")
    8282    set(WTF_CPU_ARM64 1)
    83 elseif (LOWERCASE_CMAKE_SYSTEM_PROCESSOR MATCHES "alpha*")
    84     set(WTF_CPU_ALPHA 1)
    8583elseif (LOWERCASE_CMAKE_SYSTEM_PROCESSOR MATCHES "^mips")
    8684    set(WTF_CPU_MIPS 1)
    87 elseif (LOWERCASE_CMAKE_SYSTEM_PROCESSOR MATCHES "sh4")
    88     set(WTF_CPU_SH4 1)
    8985elseif (LOWERCASE_CMAKE_SYSTEM_PROCESSOR MATCHES "(x64|x86_64|amd64)")
    9086    set(WTF_CPU_X86_64 1)
     
    9793elseif (LOWERCASE_CMAKE_SYSTEM_PROCESSOR MATCHES "ppc64le")
    9894    set(WTF_CPU_PPC64LE 1)
    99 elseif (LOWERCASE_CMAKE_SYSTEM_PROCESSOR MATCHES "parisc*")
    100     set(WTF_CPU_HPPA 1)
    101 elseif (LOWERCASE_CMAKE_SYSTEM_PROCESSOR MATCHES "s390")
    102     set(WTF_CPU_S390 1)
    103 elseif (LOWERCASE_CMAKE_SYSTEM_PROCESSOR MATCHES "s390x")
    104     set(WTF_CPU_S390X 1)
    10595else ()
    106     message(FATAL_ERROR "Unknown CPU '${LOWERCASE_CMAKE_SYSTEM_PROCESSOR}'")
     96    set(WTF_CPU_UNKNOWN 1)
    10797endif ()
    10898
  • trunk/ChangeLog

    r225039 r225040  
     12017-11-19  Yusuke Suzuki  <utatane.tea@gmail.com>
     2
     3        Add CPU(UNKNOWN) to cover all the unknown CPU types
     4        https://bugs.webkit.org/show_bug.cgi?id=179243
     5
     6        Reviewed by JF Bastien.
     7
     8        Drop SH4, S390, and S390X explicit support. They are handled as CPU(UNKNOWN).
     9
     10        * CMakeLists.txt:
     11
    1122017-11-19  Tim Horton  <timothy_horton@apple.com>
    213
  • trunk/Source/JavaScriptCore/CMakeLists.txt

    r224826 r225040  
    577577list(APPEND JavaScriptCore_HEADERS ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/InjectedScriptSource.h)
    578578
    579 if (WTF_CPU_ARM)
    580 elseif (WTF_CPU_ARM64)
    581 elseif (WTF_CPU_ALPHA)
    582 elseif (WTF_CPU_HPPA)
    583 elseif (WTF_CPU_PPC)
    584 elseif (WTF_CPU_PPC64)
    585 elseif (WTF_CPU_PPC64LE)
    586 elseif (WTF_CPU_S390)
    587 elseif (WTF_CPU_S390X)
    588 elseif (WTF_CPU_MIPS)
    589 elseif (WTF_CPU_SH4)
    590 elseif (WTF_CPU_X86)
    591 elseif (WTF_CPU_X86_64)
     579if (WTF_CPU_X86_64)
    592580    if (MSVC AND ENABLE_JIT)
    593581        add_custom_command(
     
    599587        list(APPEND JavaScriptCore_SOURCES ${DERIVED_SOURCES_DIR}/JITStubsMSVC64.obj)
    600588    endif ()
    601 else ()
    602     message(FATAL_ERROR "Unknown CPU")
    603589endif ()
    604590
  • trunk/Source/JavaScriptCore/ChangeLog

    r225039 r225040  
     12017-11-19  Yusuke Suzuki  <utatane.tea@gmail.com>
     2
     3        Add CPU(UNKNOWN) to cover all the unknown CPU types
     4        https://bugs.webkit.org/show_bug.cgi?id=179243
     5
     6        Reviewed by JF Bastien.
     7
     8        * CMakeLists.txt:
     9
    1102017-11-19  Tim Horton  <timothy_horton@apple.com>
    211
  • trunk/Source/WTF/ChangeLog

    r225039 r225040  
     12017-11-19  Yusuke Suzuki  <utatane.tea@gmail.com>
     2
     3        Add CPU(UNKNOWN) to cover all the unknown CPU types
     4        https://bugs.webkit.org/show_bug.cgi?id=179243
     5
     6        Reviewed by JF Bastien.
     7
     8        This patch adds a new CPU type, `CPU(UNKNOWN)` to cover all the unknown CPUs.
     9        This CPU architecture tells conservative assumption to make JSC work on all
     10        the unknown generic CPUs. And we make several CPUs (ALPHA, SH4, S390, S390X, IA64, IA64_32)
     11        UNKNOWN.
     12
     13        We also make InlineASM available only for !CPU(UNKNOWN). In an unknown CPU, inline asm is not useful.
     14
     15        And we also introduce a generic way to detect 64bit pointer environment by using
     16        __SIZEOF_POINTER__ predefined macro, or `UINTPTR_MAX > UINT32_MAX`.
     17
     18        * wtf/InlineASM.h:
     19        * wtf/Platform.h:
     20        * wtf/dtoa/utils.h:
     21
    1222017-11-19  Tim Horton  <timothy_horton@apple.com>
    223
  • trunk/Source/WTF/wtf/InlineASM.h

    r221600 r225040  
    2626#ifndef InlineASM_h
    2727#define InlineASM_h
     28#include <wtf/Platform.h>
     29#if !CPU(UNKNOWN)
    2830
    2931/* asm directive helpers */
     
    6668     || OS(FREEBSD)             \
    6769     || OS(OPENBSD)             \
    68      || (OS(HPUX) && CPU(IA64)) \
     70     || OS(HPUX)                \
    6971     || OS(NETBSD)
    7072    // ELF platform
     
    9597#endif
    9698
     99#endif // !CPU(UNKNOWN)
    97100#endif // InlineASM_h
  • trunk/Source/WTF/wtf/Platform.h

    r225032 r225040  
    5858
    5959/* ==== CPU() - the target CPU architecture ==== */
    60 
    61 /* CPU(ALPHA) - DEC Alpha */
    62 #if defined(__alpha__)
    63 #define WTF_CPU_ALPHA 1
    64 #endif
    65 
    66 /* CPU(HPPA) - HP PA-RISC */
    67 #if defined(__hppa__) || defined(__hppa64__)
    68 #define WTF_CPU_HPPA 1
    69 #endif
    70 
    71 /* CPU(IA64) - Itanium / IA-64 */
    72 #if defined(__ia64__)
    73 #define WTF_CPU_IA64 1
    74 /* 32-bit mode on Itanium */
    75 #if !defined(__LP64__)
    76 #define WTF_CPU_IA64_32 1
    77 #endif
    78 #endif
     60/* CPU(KNOWN) becomes true if we explicitly support a target CPU. */
    7961
    8062/* CPU(MIPS) - MIPS 32-bit and 64-bit */
     
    8769#define WTF_MIPS_ARCH __mips
    8870#endif
     71#define WTF_CPU_KNOWN 1
    8972#define WTF_MIPS_PIC (defined __PIC__)
    9073#define WTF_MIPS_ISA(v) (defined WTF_MIPS_ARCH && WTF_MIPS_ARCH == v)
     
    10487    && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
    10588#define WTF_CPU_PPC64 1
     89#define WTF_CPU_KNOWN 1
    10690#endif
    10791
     
    11498    && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
    11599#define WTF_CPU_PPC64LE 1
     100#define WTF_CPU_KNOWN 1
    116101#endif
    117102
     
    127112    && CPU(BIG_ENDIAN)
    128113#define WTF_CPU_PPC 1
    129 #endif
    130 
    131 /* CPU(SH4) - SuperH SH-4 */
    132 #if defined(__SH4__)
    133 #define WTF_CPU_SH4 1
    134 #endif
    135 
    136 /* CPU(S390X) - S390 64-bit */
    137 #if defined(__s390x__)
    138 #define WTF_CPU_S390X 1
    139 #endif
    140 
    141 /* CPU(S390) - S390 32-bit */
    142 #if (  defined(__s390__)        \
    143     && !CPU(S390X))
    144 #define WTF_CPU_S390 1
     114#define WTF_CPU_KNOWN 1
    145115#endif
    146116
     
    152122    || defined(__THW_INTEL)
    153123#define WTF_CPU_X86 1
     124#define WTF_CPU_KNOWN 1
    154125
    155126#if defined(__SSE2__) || (defined(_M_IX86_FP) && _M_IX86_FP >= 2)
     
    164135#define WTF_CPU_X86_64 1
    165136#define WTF_CPU_X86_SSE2 1
     137#define WTF_CPU_KNOWN 1
    166138#endif
    167139
     
    169141#if (defined(__arm64__) && defined(__APPLE__)) || defined(__aarch64__)
    170142#define WTF_CPU_ARM64 1
     143#define WTF_CPU_KNOWN 1
    171144
    172145#if defined(__arm64e__)
     
    183156    || defined(_ARM_)
    184157#define WTF_CPU_ARM 1
     158#define WTF_CPU_KNOWN 1
    185159
    186160#if defined(__ARM_PCS_VFP)
     
    345319#endif /* ARM */
    346320
    347 #if CPU(ARM) || CPU(MIPS) || CPU(SH4) || CPU(ALPHA) || CPU(HPPA)
     321#if !CPU(KNOWN)
     322#define WTF_CPU_UNKNOWN 1
     323#endif
     324
     325#if CPU(ARM) || CPU(MIPS) || CPU(UNKNOWN)
    348326#define WTF_CPU_NEEDS_ALIGNED_ACCESS 1
    349327#endif
     
    738716
    739717#if !defined(USE_JSVALUE64) && !defined(USE_JSVALUE32_64)
    740 #if (CPU(X86_64) && !defined(__ILP32__) && (OS(UNIX) || OS(WINDOWS))) \
    741     || (CPU(IA64) && !CPU(IA64_32)) \
    742     || CPU(ALPHA) \
    743     || (CPU(ARM64) && !defined(__ILP32__)) \
    744     || CPU(S390X) \
    745     || CPU(MIPS64) \
    746     || CPU(PPC64) \
    747     || CPU(PPC64LE)
     718#if COMPILER(GCC_OR_CLANG)
     719/* __LP64__ is not defined on 64bit Windows since it uses LLP64. Using __SIZEOF_POINTER__ is simpler. */
     720#if __SIZEOF_POINTER__ == 8
    748721#define USE_JSVALUE64 1
    749 #else
     722#elif __SIZEOF_POINTER__ == 4
    750723#define USE_JSVALUE32_64 1
     724#else
     725#error "Unsupported pointer width"
     726#endif
     727#elif COMPILER(MSVC)
     728#if defined(_WIN64)
     729#define USE_JSVALUE64 1
     730#else
     731#define USE_JSVALUE32_64 1
     732#endif
     733#else
     734/* This is the most generic way. But in OS(DARWIN), Platform.h can be included by sandbox definition file (.sb).
     735 * At that time, we cannot include "stdint.h" header. So in the case of known compilers, we use predefined constants instead. */
     736#include <stdint.h>
     737#if UINTPTR_MAX > UINT32_MAX
     738#define USE_JSVALUE64 1
     739#else
     740#define USE_JSVALUE32_64 1
     741#endif
    751742#endif
    752743#endif /* !defined(USE_JSVALUE64) && !defined(USE_JSVALUE32_64) */
  • trunk/Source/WTF/wtf/dtoa/utils.h

    r223035 r225040  
    5050defined(_MIPS_ARCH_MIPS32R2)
    5151#define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1
    52 #elif CPU(MIPS) || CPU(MIPS64) || CPU(PPC) || CPU(PPC64) || CPU(PPC64LE) || CPU(SH4) || CPU(S390) || CPU(S390X) || CPU(IA64) || CPU(ALPHA) || CPU(ARM64) || CPU(HPPA)
     52#elif CPU(MIPS) || CPU(MIPS64) || CPU(PPC) || CPU(PPC64) || CPU(PPC64LE) || CPU(ARM64)
    5353#define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1
    5454#elif defined(_M_IX86) || defined(__i386__)
     
    6060#endif  // _WIN32
    6161#else
    62 #error Target architecture was not detected as supported by Double-Conversion.
     62// Conservatively disable double conversion for unknown architectures.
     63#undef DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS
    6364#endif
    6465
Note: See TracChangeset for help on using the changeset viewer.