Platform.h is out of control Part 8: Macros are used inconsistently
authorweinig@apple.com <weinig@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 21 Jan 2020 04:01:50 +0000 (04:01 +0000)
committerweinig@apple.com <weinig@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 21 Jan 2020 04:01:50 +0000 (04:01 +0000)
https://bugs.webkit.org/show_bug.cgi?id=206425

Reviewed by Darin Adler.

Source/bmalloc:

* bmalloc/BPlatform.h:
Update OS_EFFECTIVE_ADDRESS_WIDTH to match WTF definition, add needed OS macros.

Source/JavaScriptCore:

* assembler/ARM64Assembler.h:
(JSC::ARM64Assembler::cacheFlush):
(JSC::ARM64Assembler::xOrSp):
(JSC::ARM64Assembler::xOrZr):
* assembler/ARM64Registers.h:
* assembler/ARMv7Assembler.h:
(JSC::ARMv7Assembler::cacheFlush):
* assembler/ARMv7Registers.h:
* assembler/AssemblerCommon.h:
(JSC::isDarwin):
* b3/air/AirCCallingConvention.cpp:
* jit/ExecutableAllocator.h:
* jit/ThunkGenerators.cpp:
* jsc.cpp:
* runtime/MathCommon.cpp:
Use OS(DARWIN) more consistently for darwin level functionality.

* bytecode/CodeOrigin.h:
* runtime/JSString.h:
Update to use OS_CONSTANT.

* disassembler/ARM64/A64DOpcode.cpp:
* disassembler/ARM64Disassembler.cpp:
* disassembler/UDis86Disassembler.cpp:
* disassembler/UDis86Disassembler.h:
* disassembler/X86Disassembler.cpp:
* disassembler/udis86/udis86.c:
* disassembler/udis86/udis86_decode.c:
* disassembler/udis86/udis86_itab_holder.c:
* disassembler/udis86/udis86_syn-att.c:
* disassembler/udis86/udis86_syn-intel.c:
* disassembler/udis86/udis86_syn.c:
* interpreter/Interpreter.cpp:
* interpreter/Interpreter.h:
* interpreter/InterpreterInlines.h:
(JSC::Interpreter::getOpcodeID):
* llint/LowLevelInterpreter.cpp:
* tools/SigillCrashAnalyzer.cpp:
Switch to using ENABLE rather than USE for features internal to WebKit

Source/WTF:

Start addressing FIXMEs added to Platform.h (and helper files) during previous
cleanup work.

- Renames WTF_CPU_EFFECTIVE_ADDRESS_WIDTH to WTF_OS_CONSTANT_EFFECTIVE_ADDRESS_WIDTH,
  making it available via new macro OS_CONSTANT(...), and syncs bmalloc redefinition.
- Renames:
     USE_LLINT_EMBEDDED_OPCODE_ID to ENABLE_LLINT_EMBEDDED_OPCODE_ID
     USE_UDIS86 to ENABLE_UDIS86
     USE_ARM64_DISASSEMBLER to ENABLE_ARM64_DISASSEMBLER
  Enable is more appropriate here as these enable functionality within webkit.
- Removes undefs that are no longer needed due to only defining the macro once now.
- Removes dead defined(__LP64__) check after PLATFORM(MAC) macOS is always 64-bit these
  days.

* wtf/Packed.h:
(WTF::alignof):
* wtf/Platform.h:
* wtf/PlatformEnable.h:
* wtf/PlatformOS.h:
* wtf/WTFAssertions.cpp:
* wtf/text/StringCommon.h:

Tools:

* TestWebKitAPI/Tests/WTF/Packed.cpp:
(TestWebKitAPI::TEST):
Update to use OS_CONSTANT.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@254843 268f45cc-cd09-0410-ab3c-d52691b4dbfc

40 files changed:
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/assembler/ARM64Assembler.h
Source/JavaScriptCore/assembler/ARM64Registers.h
Source/JavaScriptCore/assembler/ARMv7Assembler.h
Source/JavaScriptCore/assembler/ARMv7Registers.h
Source/JavaScriptCore/assembler/AssemblerCommon.h
Source/JavaScriptCore/b3/air/AirCCallingConvention.cpp
Source/JavaScriptCore/bytecode/CodeOrigin.h
Source/JavaScriptCore/disassembler/ARM64/A64DOpcode.cpp
Source/JavaScriptCore/disassembler/ARM64Disassembler.cpp
Source/JavaScriptCore/disassembler/UDis86Disassembler.cpp
Source/JavaScriptCore/disassembler/UDis86Disassembler.h
Source/JavaScriptCore/disassembler/X86Disassembler.cpp
Source/JavaScriptCore/disassembler/udis86/udis86.c
Source/JavaScriptCore/disassembler/udis86/udis86_decode.c
Source/JavaScriptCore/disassembler/udis86/udis86_itab_holder.c
Source/JavaScriptCore/disassembler/udis86/udis86_syn-att.c
Source/JavaScriptCore/disassembler/udis86/udis86_syn-intel.c
Source/JavaScriptCore/disassembler/udis86/udis86_syn.c
Source/JavaScriptCore/interpreter/Interpreter.cpp
Source/JavaScriptCore/interpreter/Interpreter.h
Source/JavaScriptCore/interpreter/InterpreterInlines.h
Source/JavaScriptCore/jit/ExecutableAllocator.h
Source/JavaScriptCore/jit/ThunkGenerators.cpp
Source/JavaScriptCore/jsc.cpp
Source/JavaScriptCore/llint/LowLevelInterpreter.cpp
Source/JavaScriptCore/runtime/JSString.h
Source/JavaScriptCore/runtime/MathCommon.cpp
Source/JavaScriptCore/tools/SigillCrashAnalyzer.cpp
Source/WTF/ChangeLog
Source/WTF/wtf/Packed.h
Source/WTF/wtf/Platform.h
Source/WTF/wtf/PlatformEnable.h
Source/WTF/wtf/PlatformOS.h
Source/WTF/wtf/WTFAssertions.cpp
Source/WTF/wtf/text/StringCommon.h
Source/bmalloc/ChangeLog
Source/bmalloc/bmalloc/BPlatform.h
Tools/ChangeLog
Tools/TestWebKitAPI/Tests/WTF/Packed.cpp

index c48fbea..24f9979 100644 (file)
@@ -1,3 +1,50 @@
+2020-01-17  Sam Weinig  <weinig@apple.com>
+
+        Platform.h is out of control Part 8: Macros are used inconsistently
+        https://bugs.webkit.org/show_bug.cgi?id=206425
+
+        Reviewed by Darin Adler.
+
+        * assembler/ARM64Assembler.h:
+        (JSC::ARM64Assembler::cacheFlush):
+        (JSC::ARM64Assembler::xOrSp):
+        (JSC::ARM64Assembler::xOrZr):
+        * assembler/ARM64Registers.h:
+        * assembler/ARMv7Assembler.h:
+        (JSC::ARMv7Assembler::cacheFlush):
+        * assembler/ARMv7Registers.h:
+        * assembler/AssemblerCommon.h:
+        (JSC::isDarwin):
+        * b3/air/AirCCallingConvention.cpp:
+        * jit/ExecutableAllocator.h:
+        * jit/ThunkGenerators.cpp:
+        * jsc.cpp:
+        * runtime/MathCommon.cpp:
+        Use OS(DARWIN) more consistently for darwin level functionality.
+
+        * bytecode/CodeOrigin.h:
+        * runtime/JSString.h:
+        Update to use OS_CONSTANT.
+
+        * disassembler/ARM64/A64DOpcode.cpp:
+        * disassembler/ARM64Disassembler.cpp:
+        * disassembler/UDis86Disassembler.cpp:
+        * disassembler/UDis86Disassembler.h:
+        * disassembler/X86Disassembler.cpp:
+        * disassembler/udis86/udis86.c:
+        * disassembler/udis86/udis86_decode.c:
+        * disassembler/udis86/udis86_itab_holder.c:
+        * disassembler/udis86/udis86_syn-att.c:
+        * disassembler/udis86/udis86_syn-intel.c:
+        * disassembler/udis86/udis86_syn.c:
+        * interpreter/Interpreter.cpp:
+        * interpreter/Interpreter.h:
+        * interpreter/InterpreterInlines.h:
+        (JSC::Interpreter::getOpcodeID):
+        * llint/LowLevelInterpreter.cpp:
+        * tools/SigillCrashAnalyzer.cpp:
+        Switch to using ENABLE rather than USE for features internal to WebKit 
+
 2020-01-20  Gus Caplan  <me@gus.host>
 
         Remove own toString from NativeError prototype
index ced8059..e763c6f 100644 (file)
@@ -2807,7 +2807,7 @@ public:
 
     static void cacheFlush(void* code, size_t size)
     {
-#if OS(IOS_FAMILY)
+#if OS(DARWIN)
         sys_cache_control(kCacheFunctionPrepareForExecution, code, size);
 #elif OS(FUCHSIA)
         zx_cache_flush(code, size, ZX_CACHE_FLUSH_INSN);
@@ -3230,13 +3230,13 @@ protected:
     static int xOrSp(RegisterID reg)
     {
         ASSERT(!isZr(reg));
-        ASSERT(!isIOS() || reg != ARM64Registers::x18);
+        ASSERT(!isDarwin() || reg != ARM64Registers::x18);
         return reg;
     }
     static int xOrZr(RegisterID reg)
     {
         ASSERT(!isSp(reg));
-        ASSERT(!isIOS() || reg != ARM64Registers::x18);
+        ASSERT(!isDarwin() || reg != ARM64Registers::x18);
         return reg & 31;
     }
     static FPRegisterID xOrZrAsFPR(RegisterID reg) { return static_cast<FPRegisterID>(xOrZr(reg)); }
index a19291f..5a72bcd 100644 (file)
@@ -39,7 +39,7 @@
 // beyond what you would save by the platform-agnostic "preserve return address" and "restore
 // return address" operations in CCallHelpers.
 
-#if !PLATFORM(IOS_FAMILY)
+#if !OS(DARWIN)
 #define FOR_EACH_GP_REGISTER(macro)                             \
     /* Parameter/result registers. */                           \
     macro(x0,  "x0",  0, 0)                                     \
index 656bc2f..6151c0b 100644 (file)
@@ -2376,7 +2376,7 @@ public:
 
     static void cacheFlush(void* code, size_t size)
     {
-#if OS(IOS_FAMILY)
+#if OS(DARWIN)
         sys_cache_control(kCacheFunctionPrepareForExecution, code, size);
 #elif OS(LINUX)
         size_t page = pageSize();
index 786225a..16b95e0 100644 (file)
@@ -36,7 +36,7 @@
 #define FOR_EACH_FP_REGISTER(macro)             \
     FOR_EACH_FP_DOUBLE_REGISTER(macro)
 
-#if !PLATFORM(IOS_FAMILY)
+#if !OS(DARWIN)
 #define FOR_EACH_GP_REGISTER(macro)             \
     macro(r0,  "r0",  0, 0)                     \
     macro(r1,  "r1",  0, 0)                     \
index d39b403..a594823 100644 (file)
 
 namespace JSC {
 
+ALWAYS_INLINE constexpr bool isDarwin()
+{
+#if OS(DARWIN)
+    return true;
+#else
+    return false;
+#endif
+}
+
 ALWAYS_INLINE constexpr bool isIOS()
 {
 #if PLATFORM(IOS_FAMILY)
index e1329a4..4e36b6a 100644 (file)
@@ -45,7 +45,7 @@ Arg marshallCCallArgumentImpl(unsigned& argumentCount, unsigned& stackOffset, Va
         return Tmp(BankInfo::toArgumentRegister(argumentIndex));
 
     unsigned slotSize;
-    if (isARM64() && isIOS()) {
+    if (isARM64() && isDarwin()) {
         // Arguments are packed.
         slotSize = sizeofType(child->type());
     } else {
index f9829a2..cb4230e 100644 (file)
@@ -234,8 +234,8 @@ private:
     }
 
 #if CPU(ADDRESS64)
-    static constexpr unsigned s_freeBitsAtTop = 64 - WTF_CPU_EFFECTIVE_ADDRESS_WIDTH;
-    static constexpr uintptr_t s_maskCompositeValueForPointer = ((1ULL << WTF_CPU_EFFECTIVE_ADDRESS_WIDTH) - 1) & ~(8ULL - 1);
+    static constexpr unsigned s_freeBitsAtTop = 64 - OS_CONSTANT(EFFECTIVE_ADDRESS_WIDTH);
+    static constexpr uintptr_t s_maskCompositeValueForPointer = ((1ULL << OS_CONSTANT(EFFECTIVE_ADDRESS_WIDTH)) - 1) & ~(8ULL - 1);
     static uintptr_t buildCompositeValue(InlineCallFrame* inlineCallFrame, BytecodeIndex bytecodeIndex)
     {
         if (!bytecodeIndex)
index 64d3cdf..65e9750 100644 (file)
@@ -25,7 +25,7 @@
 
 #include "config.h"
 
-#if USE(ARM64_DISASSEMBLER)
+#if ENABLE(ARM64_DISASSEMBLER)
 
 #include "A64DOpcode.h"
 
@@ -1560,4 +1560,4 @@ const char* A64DOpcodeUnconditionalBranchRegister::format()
 
 } } // namespace JSC::ARM64Disassembler
 
-#endif // USE(ARM64_DISASSEMBLER)
+#endif // ENABLE(ARM64_DISASSEMBLER)
index 093b3fa..8c34372 100644 (file)
@@ -26,7 +26,7 @@
 #include "config.h"
 #include "Disassembler.h"
 
-#if USE(ARM64_DISASSEMBLER)
+#if ENABLE(ARM64_DISASSEMBLER)
 
 #include "A64DOpcode.h"
 #include "MacroAssemblerCodeRef.h"
@@ -53,5 +53,5 @@ bool tryToDisassemble(const MacroAssemblerCodePtr<DisassemblyPtrTag>& codePtr, s
 
 } // namespace JSC
 
-#endif // USE(ARM64_DISASSEMBLER)
+#endif // ENABLE(ARM64_DISASSEMBLER)
 
index 15db1bd..fdbe9fc 100644 (file)
@@ -26,7 +26,7 @@
 #include "config.h"
 #include "UDis86Disassembler.h"
 
-#if USE(UDIS86)
+#if ENABLE(UDIS86)
 
 #include "MacroAssemblerCodeRef.h"
 #include "udis86.h"
@@ -59,5 +59,5 @@ bool tryToDisassembleWithUDis86(const MacroAssemblerCodePtr<DisassemblyPtrTag>&
 
 } // namespace JSC
 
-#endif // USE(UDIS86)
+#endif // ENABLE(UDIS86)
 
index 7f89069..976cccc 100644 (file)
 
 namespace JSC {
 
-#if USE(UDIS86)
+#if ENABLE(UDIS86)
 
 bool tryToDisassembleWithUDis86(const MacroAssemblerCodePtr<DisassemblyPtrTag>&, size_t, const char* prefix, PrintStream& out);
 
-#else // USE(UDIS86)
+#else // ENABLE(UDIS86)
 
 inline bool tryToDisassembleWithUDis86(const MacroAssemblerCodePtr<DisassemblyPtrTag>&, size_t, const char*, PrintStream&) { return false; }
 
-#endif // USE(UDIS86)
+#endif // ENABLE(UDIS86)
 
 } // namespace JSC
index ef6ca82..af2868a 100644 (file)
@@ -26,7 +26,7 @@
 #include "config.h"
 #include "Disassembler.h"
 
-#if USE(UDIS86)
+#if ENABLE(UDIS86)
 
 #include "MacroAssemblerCodeRef.h"
 #include "Options.h"
@@ -41,4 +41,4 @@ bool tryToDisassemble(const MacroAssemblerCodePtr<DisassemblyPtrTag>& codePtr, s
 
 } // namespace JSC
 
-#endif // USE(UDIS86)
+#endif // ENABLE(UDIS86)
index 489f9b8..75cffae 100644 (file)
@@ -26,7 +26,7 @@
 
 #include "config.h"
 
-#if USE(UDIS86)
+#if ENABLE(UDIS86)
 
 #include "udis86_udint.h"
 #include "udis86_extern.h"
@@ -457,6 +457,6 @@ ud_input_end(const struct ud *u)
   return u->inp_end;
 }
 
-#endif // USE(UDIS86)
+#endif // ENABLE(UDIS86)
 
 /* vim:set ts=2 sw=2 expandtab */
index 2533012..022f84c 100644 (file)
@@ -26,7 +26,7 @@
 
 #include "config.h"
 
-#if USE(UDIS86)
+#if ENABLE(UDIS86)
 
 #include "udis86_udint.h"
 #include "udis86_types.h"
@@ -1266,7 +1266,7 @@ ud_decode(struct ud *u)
   return u->inp_ctr;
 }
 
-#endif // USE(UDIS86)
+#endif // ENABLE(UDIS86)
 
 /*
 vim: set ts=2 sw=2 expandtab
index 7d5646e..a982591 100644 (file)
@@ -26,7 +26,7 @@
 
 #include "config.h"
 
-#if USE(UDIS86)
+#if ENABLE(UDIS86)
 
 #include "udis86_types.h"
 #include "udis86_extern.h"
@@ -228,7 +228,7 @@ ud_translate_att(struct ud *u)
   }
 }
 
-#endif // USE(UDIS86)
+#endif // ENABLE(UDIS86)
 
 /*
 vim: set ts=2 sw=2 expandtab
index 769df89..28ba492 100644 (file)
@@ -26,7 +26,7 @@
 
 #include "config.h"
 
-#if USE(UDIS86)
+#if ENABLE(UDIS86)
 
 #include "udis86_types.h"
 #include "udis86_extern.h"
@@ -224,7 +224,7 @@ ud_translate_intel(struct ud* u)
   }
 }
 
-#endif // USE(UDIS86)
+#endif // ENABLE(UDIS86)
 
 /*
 vim: set ts=2 sw=2 expandtab
index e9e0ad3..8476863 100644 (file)
@@ -26,7 +26,7 @@
 
 #include "config.h"
 
-#if USE(UDIS86)
+#if ENABLE(UDIS86)
 
 #include "udis86_types.h"
 #include "udis86_decode.h"
@@ -212,7 +212,7 @@ ud_syn_print_mem_disp(struct ud* u, const struct ud_operand *op, int sign)
   }
 }
 
-#endif // USE(UDIS86)
+#endif // ENABLE(UDIS86)
 
 /*
 vim: set ts=2 sw=2 expandtab
index 3406586..ff368a4 100644 (file)
@@ -353,7 +353,7 @@ Interpreter::~Interpreter()
 }
 
 #if ENABLE(COMPUTED_GOTO_OPCODES)
-#if !USE(LLINT_EMBEDDED_OPCODE_ID) || ASSERT_ENABLED
+#if !ENABLE(LLINT_EMBEDDED_OPCODE_ID) || ASSERT_ENABLED
 HashMap<Opcode, OpcodeID>& Interpreter::opcodeIDTable()
 {
     static NeverDestroyed<HashMap<Opcode, OpcodeID>> opcodeIDTable;
@@ -367,7 +367,7 @@ HashMap<Opcode, OpcodeID>& Interpreter::opcodeIDTable()
 
     return opcodeIDTable;
 }
-#endif // !USE(LLINT_EMBEDDED_OPCODE_ID) || ASSERT_ENABLED
+#endif // !ENABLE(LLINT_EMBEDDED_OPCODE_ID) || ASSERT_ENABLED
 #endif // ENABLE(COMPUTED_GOTO_OPCODES)
 
 #if ASSERT_ENABLED
index e83f489..6f14997 100644 (file)
@@ -144,9 +144,9 @@ namespace JSC {
 #endif
         
 #if ENABLE(COMPUTED_GOTO_OPCODES)
-#if !USE(LLINT_EMBEDDED_OPCODE_ID) || ASSERT_ENABLED
+#if !ENABLE(LLINT_EMBEDDED_OPCODE_ID) || ASSERT_ENABLED
         static HashMap<Opcode, OpcodeID>& opcodeIDTable(); // Maps Opcode => OpcodeID.
-#endif // !USE(LLINT_EMBEDDED_OPCODE_ID) || ASSERT_ENABLED
+#endif // !ENABLE(LLINT_EMBEDDED_OPCODE_ID) || ASSERT_ENABLED
 #endif // ENABLE(COMPUTED_GOTO_OPCODES)
     };
 
index e1a9294..f44d965 100644 (file)
@@ -46,7 +46,7 @@ inline OpcodeID Interpreter::getOpcodeID(Opcode opcode)
 {
 #if ENABLE(COMPUTED_GOTO_OPCODES)
     ASSERT(isOpcode(opcode));
-#if USE(LLINT_EMBEDDED_OPCODE_ID)
+#if ENABLE(LLINT_EMBEDDED_OPCODE_ID)
     // The OpcodeID is embedded in the int32_t word preceding the location of
     // the LLInt code for the opcode (see the EMBED_OPCODE_ID_IF_NEEDED macro
     // in LowLevelInterpreter.cpp).
@@ -57,7 +57,7 @@ inline OpcodeID Interpreter::getOpcodeID(Opcode opcode)
     return opcodeID;
 #else
     return opcodeIDTable().get(opcode);
-#endif // USE(LLINT_EMBEDDED_OPCODE_ID)
+#endif // ENABLE(LLINT_EMBEDDED_OPCODE_ID)
     
 #else // not ENABLE(COMPUTED_GOTO_OPCODES)
     return opcode;
index d9ca46d..14a67f9 100644 (file)
 #include <wtf/MetaAllocatorHandle.h>
 #include <wtf/MetaAllocator.h>
 
-#if OS(IOS_FAMILY)
+#if OS(DARWIN)
 #include <libkern/OSCacheControl.h>
-#endif
-
-#if OS(IOS_FAMILY)
 #include <sys/mman.h>
 #endif
 
index bf19d02..915e2bd 100644 (file)
@@ -796,7 +796,7 @@ typedef MathThunkCallingConvention(*MathThunk)(MathThunkCallingConvention);
     } \
     static MathThunk UnaryDoubleOpWrapper(function) = &function##Thunk;
 
-#elif CPU(ARM_THUMB2) && COMPILER(GCC_COMPATIBLE) && PLATFORM(IOS_FAMILY)
+#elif CPU(ARM_THUMB2) && COMPILER(GCC_COMPATIBLE) && OS(DARWIN)
 
 #define defineUnaryDoubleOpWrapper(function) \
     asm( \
index 207f66a..7371d55 100644 (file)
 #include <windows.h>
 #endif
 
-#if PLATFORM(IOS_FAMILY) && CPU(ARM_THUMB2)
+#if OS(DARWIN) && CPU(ARM_THUMB2)
 #include <fenv.h>
 #include <arm/arch.h>
 #endif
@@ -2484,7 +2484,7 @@ static void startTimeoutThreadIfNeeded(VM& vm)
 
 int main(int argc, char** argv)
 {
-#if PLATFORM(IOS_FAMILY) && CPU(ARM_THUMB2)
+#if OS(DARWIN) && CPU(ARM_THUMB2)
     // Enabled IEEE754 denormal support.
     fenv_t env;
     fegetenv( &env );
index e26e9aa..a6dd10f 100644 (file)
@@ -505,7 +505,7 @@ JSValue CLoop::execute(OpcodeID entryOpcodeID, void* executableAddress, VM* vm,
 #define OFFLINE_ASM_BEGIN   asm (
 #define OFFLINE_ASM_END     );
 
-#if USE(LLINT_EMBEDDED_OPCODE_ID)
+#if ENABLE(LLINT_EMBEDDED_OPCODE_ID)
 #define EMBED_OPCODE_ID_IF_NEEDED(__opcode) ".int " __opcode##_value_string "\n"
 #else
 #define EMBED_OPCODE_ID_IF_NEEDED(__opcode)
index e0dd96f..22c0120 100644 (file)
@@ -276,7 +276,7 @@ public:
     static_assert(sizeof(uintptr_t) == sizeof(uint64_t), "");
     class CompactFibers {
     public:
-        static constexpr uintptr_t addressMask = (1ULL << WTF_CPU_EFFECTIVE_ADDRESS_WIDTH) - 1;
+        static constexpr uintptr_t addressMask = (1ULL << OS_CONSTANT(EFFECTIVE_ADDRESS_WIDTH)) - 1;
         JSString* fiber1() const
         {
 #if CPU(LITTLE_ENDIAN)
index 5ab5ad9..5919df2 100644 (file)
@@ -30,7 +30,7 @@
 
 namespace JSC {
 
-#if PLATFORM(IOS_FAMILY) && CPU(ARM_THUMB2)
+#if OS(DARWIN) && CPU(ARM_THUMB2)
 
 // The following code is taken from netlib.org:
 //   http://www.netlib.org/fdlibm/fdlibm.h
index 8868677..d5af689 100644 (file)
@@ -33,7 +33,7 @@
 #include <mutex>
 #include <wtf/StdLibExtras.h>
 
-#if USE(ARM64_DISASSEMBLER)
+#if ENABLE(ARM64_DISASSEMBLER)
 #include "A64DOpcode.h"
 #endif
 
@@ -60,7 +60,7 @@ private:
     SigillCrashAnalyzer() { }
     void dumpCodeBlock(CodeBlock*, void* machinePC);
 
-#if USE(ARM64_DISASSEMBLER)
+#if ENABLE(ARM64_DISASSEMBLER)
     A64DOpcode m_arm64Opcode;
 #endif
 };
index 066e5c7..b9b11be 100644 (file)
@@ -1,3 +1,32 @@
+2020-01-17  Sam Weinig  <weinig@apple.com>
+
+        Platform.h is out of control Part 8: Macros are used inconsistently
+        https://bugs.webkit.org/show_bug.cgi?id=206425
+
+        Reviewed by Darin Adler.
+
+        Start addressing FIXMEs added to Platform.h (and helper files) during previous
+        cleanup work.
+        
+        - Renames WTF_CPU_EFFECTIVE_ADDRESS_WIDTH to WTF_OS_CONSTANT_EFFECTIVE_ADDRESS_WIDTH,
+          making it available via new macro OS_CONSTANT(...), and syncs bmalloc redefinition.
+        - Renames:
+             USE_LLINT_EMBEDDED_OPCODE_ID to ENABLE_LLINT_EMBEDDED_OPCODE_ID
+             USE_UDIS86 to ENABLE_UDIS86 
+             USE_ARM64_DISASSEMBLER to ENABLE_ARM64_DISASSEMBLER
+          Enable is more appropriate here as these enable functionality within webkit.
+        - Removes undefs that are no longer needed due to only defining the macro once now.
+        - Removes dead defined(__LP64__) check after PLATFORM(MAC) macOS is always 64-bit these
+          days.
+
+        * wtf/Packed.h:
+        (WTF::alignof):
+        * wtf/Platform.h:
+        * wtf/PlatformEnable.h:
+        * wtf/PlatformOS.h:
+        * wtf/WTFAssertions.cpp:
+        * wtf/text/StringCommon.h:
+
 2020-01-20  David Kilzer  <ddkilzer@apple.com>
 
         Fix missing header guards and clean up empty files in bmalloc, WTF, JavaScriptCore
index b22fc76..928927c 100644 (file)
@@ -107,8 +107,8 @@ public:
     static_assert(hasOneBitSet(alignment), "Alignment needs to be power-of-two");
     static constexpr bool isPackedType = true;
     static constexpr unsigned alignmentShiftSizeIfProfitable = getLSBSetConstexpr(alignment);
-    static constexpr unsigned storageSizeWithoutAlignmentShift = roundUpToMultipleOf<8>(WTF_CPU_EFFECTIVE_ADDRESS_WIDTH) / 8;
-    static constexpr unsigned storageSizeWithAlignmentShift = roundUpToMultipleOf<8>(WTF_CPU_EFFECTIVE_ADDRESS_WIDTH - alignmentShiftSizeIfProfitable) / 8;
+    static constexpr unsigned storageSizeWithoutAlignmentShift = roundUpToMultipleOf<8>(OS_CONSTANT(EFFECTIVE_ADDRESS_WIDTH)) / 8;
+    static constexpr unsigned storageSizeWithAlignmentShift = roundUpToMultipleOf<8>(OS_CONSTANT(EFFECTIVE_ADDRESS_WIDTH) - alignmentShiftSizeIfProfitable) / 8;
     static constexpr bool isAlignmentShiftProfitable = storageSizeWithoutAlignmentShift > storageSizeWithAlignmentShift;
     static constexpr unsigned alignmentShiftSize = isAlignmentShiftProfitable ? alignmentShiftSizeIfProfitable : 0;
     static constexpr unsigned storageSize = storageSizeWithAlignmentShift;
index 2457a6c..5d1f2fd 100644 (file)
    belong as part of Platform.h at all. */
 
 
-
-/* FIXME: Rename WTF_CPU_EFFECTIVE_ADDRESS_WIDTH to WTF_OS_EFFECTIVE_ADDRESS_WIDTH, as it is an OS feature, not a CPU feature. */
-#if CPU(ADDRESS64)
-#if (OS(IOS) || OS(TVOS) || OS(WATCHOS)) && CPU(ARM64)
-#define WTF_CPU_EFFECTIVE_ADDRESS_WIDTH 36
-#else
-/* We strongly assume that effective address width is <= 48 in 64bit architectures (e.g. NaN boxing). */
-#define WTF_CPU_EFFECTIVE_ADDRESS_WIDTH 48
-#endif
-#else
-#define WTF_CPU_EFFECTIVE_ADDRESS_WIDTH 32
-#endif
-
 #if PLATFORM(GTK)
 #define GLIB_VERSION_MIN_REQUIRED GLIB_VERSION_2_36
 #define GDK_VERSION_MIN_REQUIRED GDK_VERSION_3_6
 #define USE_LIBWEBRTC 1
 #endif
 
-/* FIXME: This is used to "turn on a specific feature of WebKit", so should be converted to an ENABLE macro. */
-/* This feature works by embedding the OpcodeID in the 32 bit just before the generated LLint code
-   that executes each opcode. It cannot be supported by the CLoop since there's no way to embed the
-   OpcodeID word in the CLoop's switch statement cases. It is also currently not implemented for MSVC.
-*/
-#if !defined(USE_LLINT_EMBEDDED_OPCODE_ID) && !ENABLE(C_LOOP) && !COMPILER(MSVC) && \
-    (CPU(X86) || CPU(X86_64) || CPU(ARM64) || (CPU(ARM_THUMB2) && OS(DARWIN)))
-#define USE_LLINT_EMBEDDED_OPCODE_ID 1
-#endif
-
 
 #if PLATFORM(COCOA)
 #if ENABLE(WEBGL)
index ced9412..faf2723 100644 (file)
@@ -619,10 +619,6 @@ the public iOS SDK. See <https://webkit.org/b/179167>. */
 #define ENABLE_OFFSCREEN_CANVAS 0
 #endif
 
-#if !defined(ENABLE_OPENTYPE_VERTICAL)
-#define ENABLE_OPENTYPE_VERTICAL 0
-#endif
-
 #if !defined(ENABLE_ORIENTATION_EVENTS)
 #define ENABLE_ORIENTATION_EVENTS 0
 #endif
@@ -740,7 +736,7 @@ the public iOS SDK. See <https://webkit.org/b/179167>. */
 /* JIT Features */
 
 /* The JIT is enabled by default on all x86-64 & ARM64 platforms. */
-#if !defined(ENABLE_JIT) &&  (CPU(X86_64) || CPU(ARM64)) && !CPU(APPLE_ARMV7K)
+#if !defined(ENABLE_JIT) && (CPU(X86_64) || CPU(ARM64)) && !CPU(APPLE_ARMV7K)
 #define ENABLE_JIT 1
 #endif
 
@@ -781,20 +777,18 @@ the public iOS SDK. See <https://webkit.org/b/179167>. */
 #define ENABLE_FTL_JIT 0
 #endif
 
-/* FIXME: This is used to "turn on a specific feature of WebKit", so should be converted to an ENABLE macro. */
 /* If possible, try to enable a disassembler. This is optional. We proceed in two
    steps: first we try to find some disassembler that we can use, and then we
    decide if the high-level disassembler API can be enabled. */
-#if !defined(USE_UDIS86) && ENABLE(JIT) && CPU(X86_64) && !USE(CAPSTONE)
-#define USE_UDIS86 1
+#if !defined(ENABLE_UDIS86) && ENABLE(JIT) && CPU(X86_64) && !USE(CAPSTONE)
+#define ENABLE_UDIS86 1
 #endif
 
-/* FIXME: This is used to "turn on a specific feature of WebKit", so should be converted to an ENABLE macro. */
-#if !defined(USE_ARM64_DISASSEMBLER) && ENABLE(JIT) && CPU(ARM64) && !USE(CAPSTONE)
-#define USE_ARM64_DISASSEMBLER 1
+#if !defined(ENABLE_ARM64_DISASSEMBLER) && ENABLE(JIT) && CPU(ARM64) && !USE(CAPSTONE)
+#define ENABLE_ARM64_DISASSEMBLER 1
 #endif
 
-#if !defined(ENABLE_DISASSEMBLER) && (USE(UDIS86) || USE(ARM64_DISASSEMBLER) || (ENABLE(JIT) && USE(CAPSTONE)))
+#if !defined(ENABLE_DISASSEMBLER) && (ENABLE(UDIS86) || ENABLE(ARM64_DISASSEMBLER) || (ENABLE(JIT) && USE(CAPSTONE)))
 #define ENABLE_DISASSEMBLER 1
 #endif
 
@@ -806,9 +800,10 @@ the public iOS SDK. See <https://webkit.org/b/179167>. */
 #endif
 
 /* Enable the DFG JIT on ARMv7.  Only tested on iOS, Linux, and FreeBSD. */
-#if (CPU(ARM_THUMB2) || CPU(ARM64)) && (PLATFORM(IOS_FAMILY) || OS(LINUX) || OS(FREEBSD))
+#if (CPU(ARM_THUMB2) || CPU(ARM64)) && (OS(DARWIN) || OS(LINUX) || OS(FREEBSD))
 #define ENABLE_DFG_JIT 1
 #endif
+
 /* Enable the DFG JIT on MIPS. */
 #if CPU(MIPS)
 #define ENABLE_DFG_JIT 1
@@ -956,7 +951,7 @@ the public iOS SDK. See <https://webkit.org/b/179167>. */
 #endif
 
 /* CSS Selector JIT Compiler */
-#if !defined(ENABLE_CSS_SELECTOR_JIT) && ((CPU(X86_64) || CPU(ARM64) || (CPU(ARM_THUMB2) && PLATFORM(IOS_FAMILY))) && ENABLE(JIT) && (OS(DARWIN) || PLATFORM(GTK) || PLATFORM(WPE)))
+#if !defined(ENABLE_CSS_SELECTOR_JIT) && ((CPU(X86_64) || CPU(ARM64) || (CPU(ARM_THUMB2) && OS(DARWIN))) && ENABLE(JIT) && (OS(DARWIN) || PLATFORM(GTK) || PLATFORM(WPE)))
 #define ENABLE_CSS_SELECTOR_JIT 1
 #endif
 
@@ -992,15 +987,11 @@ the public iOS SDK. See <https://webkit.org/b/179167>. */
 #define ENABLE_RESOURCE_USAGE 1
 #endif
 
-/* FIXME: Document or remove explicit undef. */
-#if PLATFORM(GTK) || PLATFORM(WPE)
-#undef ENABLE_OPENTYPE_VERTICAL
+#if !defined(ENABLE_OPENTYPE_VERTICAL) && PLATFORM(GTK) || PLATFORM(WPE)
 #define ENABLE_OPENTYPE_VERTICAL 1
 #endif
 
-/* FIXME: Document or remove explicit undef. */
-#if (OS(DARWIN) && USE(CG)) || (USE(FREETYPE) && !PLATFORM(GTK)) || (PLATFORM(WIN) && (USE(CG) || USE(CAIRO)))
-#undef ENABLE_OPENTYPE_MATH
+#if !defined(ENABLE_OPENTYPE_MATH) && (OS(DARWIN) && USE(CG)) || (USE(FREETYPE) && !PLATFORM(GTK)) || (PLATFORM(WIN) && (USE(CG) || USE(CAIRO)))
 #define ENABLE_OPENTYPE_MATH 1
 #endif
 
@@ -1015,8 +1006,7 @@ the public iOS SDK. See <https://webkit.org/b/179167>. */
 /* Disable SharedArrayBuffers until Spectre security concerns are mitigated. */
 #define ENABLE_SHARED_ARRAY_BUFFER 0
 
-/* FIXME: __LP64__ can probably be removed now that 32-bit macOS is no longer supported. */
-#if PLATFORM(MAC) && defined(__LP64__)
+#if PLATFORM(MAC)
 #define ENABLE_WEB_PLAYBACK_CONTROLS_MANAGER 1
 #endif
 
@@ -1042,6 +1032,14 @@ the public iOS SDK. See <https://webkit.org/b/179167>. */
 #define ENABLE_PLATFORM_DRIVEN_TEXT_CHECKING 1
 #endif
 
+/* This feature works by embedding the OpcodeID in the 32 bit just before the generated LLint code
+   that executes each opcode. It cannot be supported by the CLoop since there's no way to embed the
+   OpcodeID word in the CLoop's switch statement cases. It is also currently not implemented for MSVC.
+*/
+#if !defined(ENABLE_LLINT_EMBEDDED_OPCODE_ID) && !ENABLE(C_LOOP) && !COMPILER(MSVC) && (CPU(X86) || CPU(X86_64) || CPU(ARM64) || (CPU(ARM_THUMB2) && OS(DARWIN)))
+#define ENABLE_LLINT_EMBEDDED_OPCODE_ID 1
+#endif
+
 
 /* Asserts, invariants for macro definitions */
 
index 28a9101..83476d7 100644 (file)
@@ -41,7 +41,8 @@
 
 /* OS() - underlying operating system; only to be used for mandated low-level services like
    virtual memory, not to choose a GUI toolkit */
-#define OS(WTF_FEATURE) (defined WTF_OS_##WTF_FEATURE  && WTF_OS_##WTF_FEATURE)
+#define OS(WTF_FEATURE) (defined WTF_OS_##WTF_FEATURE && WTF_OS_##WTF_FEATURE)
+#define OS_CONSTANT(WTF_FEATURE) (WTF_OS_CONSTANT_##WTF_FEATURE)
 
 
 /* ==== OS() - underlying operating system; only to be used for mandated low-level services like
 #endif
 
 
+#if CPU(ADDRESS64)
+#if (OS(IOS) || OS(TVOS) || OS(WATCHOS)) && CPU(ARM64)
+#define WTF_OS_CONSTANT_EFFECTIVE_ADDRESS_WIDTH 36
+#else
+/* We strongly assume that effective address width is <= 48 in 64bit architectures (e.g. NaN boxing). */
+#define WTF_OS_CONSTANT_EFFECTIVE_ADDRESS_WIDTH 48
+#endif
+#else
+#define WTF_OS_CONSTANT_EFFECTIVE_ADDRESS_WIDTH 32
+#endif
+
+
 /* Asserts, invariants for macro definitions */
 
 #define WTF_OS_WIN ERROR "USE WINDOWS WITH OS NOT WIN"
index a17b7c3..3327026 100644 (file)
@@ -50,8 +50,8 @@ static_assert(sizeof(RefPtr<DummyStruct>) == sizeof(DummyStruct*), "");
 static_assert(sizeof(RefCountedArray<DummyStruct>) == sizeof(void*), "");
 
 #if OS(DARWIN) && CPU(ADDRESS64)
-static_assert(MACH_VM_MAX_ADDRESS <= ((1ULL << WTF_CPU_EFFECTIVE_ADDRESS_WIDTH) - 1));
+static_assert(MACH_VM_MAX_ADDRESS <= ((1ULL << OS_CONSTANT(EFFECTIVE_ADDRESS_WIDTH)) - 1));
 #endif
-    
+
 } // namespace WTF
 
index 811320f..bd7eaa6 100644 (file)
@@ -172,7 +172,7 @@ ALWAYS_INLINE bool equal(const UChar* aUChar, const UChar* bUChar, unsigned leng
 
     return true;
 }
-#elif PLATFORM(IOS_FAMILY) && WTF_ARM_ARCH_AT_LEAST(7) && !ASAN_ENABLED
+#elif OS(DARWIN) && WTF_ARM_ARCH_AT_LEAST(7) && !ASAN_ENABLED
 ALWAYS_INLINE bool equal(const LChar* a, const LChar* b, unsigned length)
 {
     bool isEqual = false;
index 889ef03..1566c55 100644 (file)
@@ -1,3 +1,13 @@
+2020-01-17  Sam Weinig  <weinig@apple.com>
+
+        Platform.h is out of control Part 8: Macros are used inconsistently
+        https://bugs.webkit.org/show_bug.cgi?id=206425
+
+        Reviewed by Darin Adler.
+
+        * bmalloc/BPlatform.h:
+        Update OS_EFFECTIVE_ADDRESS_WIDTH to match WTF definition, add needed OS macros.
+
 2020-01-20  David Kilzer  <ddkilzer@apple.com>
 
         Fix missing header guards and clean up empty files in bmalloc, WTF, JavaScriptCore
index d784cf1..1b8bdd9 100644 (file)
@@ -58,6 +58,7 @@
 
 #if BOS(DARWIN) && !defined(BUILDING_WITH_CMAKE)
 #if TARGET_OS_IOS
+#define BOS_IOS 1
 #define BPLATFORM_IOS 1
 #if TARGET_OS_SIMULATOR
 #define BPLATFORM_IOS_SIMULATOR 1
@@ -69,6 +70,7 @@
 #define BPLATFORM_IOS_FAMILY_SIMULATOR 1
 #endif
 #elif TARGET_OS_MAC
+#define BOS_MAC 1
 #define BPLATFORM_MAC 1
 #endif
 #endif
 #endif
 
 #if defined(TARGET_OS_WATCH) && TARGET_OS_WATCH
+#define BOS_WATCHOS 1
 #define BPLATFORM_WATCHOS 1
 #endif
 
 #if defined(TARGET_OS_TV) && TARGET_OS_TV
+#define BOS_APPLETV 1
 #define BPLATFORM_APPLETV 1
 #endif
 
 #endif
 
 #if BCPU(ADDRESS64)
-#if BOS(DARWIN) && BCPU(ARM64)
+#if (BOS(IOS) || BOS(TVOS) || BOS(WATCHOS)) && BCPU(ARM64)
 #define BOS_EFFECTIVE_ADDRESS_WIDTH 36
 #else
 /* We strongly assume that effective address width is <= 48 in 64bit architectures (e.g. NaN boxing). */
index 0b36dfa..6d41e77 100644 (file)
@@ -1,3 +1,14 @@
+2020-01-20  Sam Weinig  <weinig@apple.com>
+
+        Platform.h is out of control Part 8: Macros are used inconsistently
+        https://bugs.webkit.org/show_bug.cgi?id=206425
+
+        Reviewed by Darin Adler.
+
+        * TestWebKitAPI/Tests/WTF/Packed.cpp:
+        (TestWebKitAPI::TEST):
+        Update to use OS_CONSTANT.
+
 2020-01-20  Saam Barati  <sbarati@apple.com>
 
         REGRESSION(r254788): mozilla-tests.yaml/js1_5/Regress/regress-191633.js.mozilla fails
index b4849bd..90acaa8 100644 (file)
@@ -59,8 +59,8 @@ TEST(WTF_Packed, AssignAndGet)
 {
     {
         PackedPtr<uint8_t> key { nullptr };
-        static_assert(WTF_CPU_EFFECTIVE_ADDRESS_WIDTH != 64, "");
-        uint8_t* max = bitwise_cast<uint8_t*>(static_cast<uintptr_t>(((1ULL) << WTF_CPU_EFFECTIVE_ADDRESS_WIDTH) - 1));
+        static_assert(OS_CONSTANT(EFFECTIVE_ADDRESS_WIDTH) != 64, "");
+        uint8_t* max = bitwise_cast<uint8_t*>(static_cast<uintptr_t>(((1ULL) << OS_CONSTANT(EFFECTIVE_ADDRESS_WIDTH)) - 1));
         key = max;
         EXPECT_EQ(key.get(), max);
     }