Changeset 255159 in webkit


Ignore:
Timestamp:
Jan 27, 2020 12:07:23 PM (4 years ago)
Author:
Jonathan Bedard
Message:

Fix OpenSource iphoneos arm64e build
https://bugs.webkit.org/show_bug.cgi?id=206703

Reviewed by Yusuke Suzuki.

Source/JavaScriptCore:

  • runtime/MachineContext.h:

(JSC::MachineContext::stackPointerImpl): Conditionalize function existence on
USE(DARWIN_REGISTER_MACROS).
(JSC::MachineContext::stackPointer): Use Darwin's register macros if available.
(JSC::MachineContext::setStackPointer): Ditto.
(JSC::MachineContext::instructionPointerImpl): Conditionalize function existence
on USE(DARWIN_REGISTER_MACROS).
(JSC::MachineContext::instructionPointer): Use Darwin's register macros if available.
(JSC::MachineContext::setInstructionPointer): Ditto.
(JSC::MachineContext::linkRegister): Ditto.
(JSC::MachineContext::setLinkRegister): Ditto.
(JSC::MachineContext::linkRegisterImpl): Deleted.

Source/WTF:

  • wtf/PlatformUse.h: Add USE(DARWIN_REGISTER_MACROS) check.
Location:
trunk/Source
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r255145 r255159  
     12020-01-27  Jonathan Bedard  <jbedard@apple.com>
     2
     3        Fix OpenSource iphoneos arm64e build
     4        https://bugs.webkit.org/show_bug.cgi?id=206703
     5
     6        Reviewed by Yusuke Suzuki.
     7
     8        * runtime/MachineContext.h:
     9        (JSC::MachineContext::stackPointerImpl): Conditionalize function existence on
     10        USE(DARWIN_REGISTER_MACROS).
     11        (JSC::MachineContext::stackPointer): Use Darwin's register macros if available.
     12        (JSC::MachineContext::setStackPointer): Ditto.
     13        (JSC::MachineContext::instructionPointerImpl): Conditionalize function existence
     14        on USE(DARWIN_REGISTER_MACROS).
     15        (JSC::MachineContext::instructionPointer): Use Darwin's register macros if available.
     16        (JSC::MachineContext::setInstructionPointer): Ditto.
     17        (JSC::MachineContext::linkRegister): Ditto.
     18        (JSC::MachineContext::setLinkRegister): Ditto.
     19        (JSC::MachineContext::linkRegisterImpl): Deleted.
     20
    1212020-01-27  Paulo Matos  <pmatos@igalia.com>
    222
  • trunk/Source/JavaScriptCore/runtime/MachineContext.h

    r239427 r255159  
    5959
    6060#if !USE(PLATFORM_REGISTERS_WITH_PROFILE)
     61
     62#if !USE(DARWIN_REGISTER_MACROS)
    6163static inline void*& stackPointerImpl(mcontext_t&);
     64static inline void*& instructionPointerImpl(mcontext_t&);
     65#endif // !USE(DARWIN_REGISTER_MACROS)
     66
    6267static inline void*& framePointerImpl(mcontext_t&);
    63 static inline void*& instructionPointerImpl(mcontext_t&);
    6468#endif // !USE(PLATFORM_REGISTERS_WITH_PROFILE)
    6569
     
    8286#if OS(WINDOWS) || HAVE(MACHINE_CONTEXT)
    8387
    84 #if !USE(PLATFORM_REGISTERS_WITH_PROFILE)
     88#if !USE(PLATFORM_REGISTERS_WITH_PROFILE) && !USE(DARWIN_REGISTER_MACROS)
    8589static inline void*& stackPointerImpl(PlatformRegisters& regs)
    8690{
     
    9498#elif CPU(PPC) || CPU(PPC64)
    9599    return reinterpret_cast<void*&>(regs.__r1);
    96 #elif CPU(ARM_THUMB2) || CPU(ARM) || CPU(ARM64)
    97     return reinterpret_cast<void*&>(regs.__sp);
    98100#else
    99101#error Unknown Architecture
     
    141143    assertIsNotTagged(value);
    142144    return bitwise_cast<T>(value);
     145#elif USE(DARWIN_REGISTER_MACROS)
     146    return bitwise_cast<T>(__darwin_arm_thread_state64_get_sp(regs));
    143147#else
    144148    return bitwise_cast<T>(stackPointerImpl(const_cast<PlatformRegisters&>(regs)));
     
    152156    assertIsNotTagged(bitwise_cast<void*>(value));
    153157    WTF_WRITE_PLATFORM_REGISTERS_SP_WITH_PROFILE(regs, bitwise_cast<void*>(value));
     158#elif USE(DARWIN_REGISTER_MACROS)
     159    __darwin_arm_thread_state64_set_sp(regs, value);
    154160#else
    155161    stackPointerImpl(regs) = bitwise_cast<void*>(value);
     
    168174#if HAVE(MACHINE_CONTEXT)
    169175
    170 #if !USE(PLATFORM_REGISTERS_WITH_PROFILE)
     176#if !USE(PLATFORM_REGISTERS_WITH_PROFILE) && !USE(DARWIN_REGISTER_MACROS)
    171177static inline void*& stackPointerImpl(mcontext_t& machineContext)
    172178{
     
    215221    assertIsNotTagged(value);
    216222    return bitwise_cast<T>(value);
     223#elif USE(DARWIN_REGISTER_MACROS)
     224    return stackPointer(machineContext->__ss);
    217225#else
    218226    return bitwise_cast<T>(stackPointerImpl(const_cast<mcontext_t&>(machineContext)));
     
    226234    assertIsNotTagged(bitwise_cast<void*>(value));
    227235    WTF_WRITE_MACHINE_CONTEXT_SP_WITH_PROFILE(machineContext, bitwise_cast<void*>(value));
     236#elif USE(DARWIN_REGISTER_MACROS)
     237    return setStackPointer(machineContext->__ss, value);
    228238#else
    229239    stackPointerImpl(machineContext) = bitwise_cast<void*>(value);
     
    386396#if OS(WINDOWS) || HAVE(MACHINE_CONTEXT)
    387397
    388 #if !USE(PLATFORM_REGISTERS_WITH_PROFILE)
     398#if !USE(PLATFORM_REGISTERS_WITH_PROFILE) && !USE(DARWIN_REGISTER_MACROS)
    389399static inline void*& instructionPointerImpl(PlatformRegisters& regs)
    390400{
     
    396406#elif CPU(X86_64)
    397407    return reinterpret_cast<void*&>(regs.__rip);
    398 #elif CPU(ARM_THUMB2) || CPU(ARM) || CPU(ARM64)
    399     return reinterpret_cast<void*&>(regs.__pc);
    400408#else
    401409#error Unknown Architecture
     
    437445#if USE(PLATFORM_REGISTERS_WITH_PROFILE)
    438446    void* value = WTF_READ_PLATFORM_REGISTERS_PC_WITH_PROFILE(regs);
     447#elif USE(DARWIN_REGISTER_MACROS)
     448    void* value = __darwin_arm_thread_state64_get_pc_fptr(regs);
    439449#else
    440450    void* value = instructionPointerImpl(const_cast<PlatformRegisters&>(regs));
     
    453463#if USE(PLATFORM_REGISTERS_WITH_PROFILE)
    454464    WTF_WRITE_PLATFORM_REGISTERS_PC_WITH_PROFILE(regs, value.executableAddress());
     465#elif USE(DARWIN_REGISTER_MACROS)
     466    __darwin_arm_thread_state64_set_pc_fptr(regs, value.executableAddress());
    455467#else
    456468    instructionPointerImpl(regs) = value.executableAddress();
     
    462474#if HAVE(MACHINE_CONTEXT)
    463475
    464 #if !USE(PLATFORM_REGISTERS_WITH_PROFILE)
     476#if !USE(PLATFORM_REGISTERS_WITH_PROFILE) && !USE(DARWIN_REGISTER_MACROS)
    465477static inline void*& instructionPointerImpl(mcontext_t& machineContext)
    466478{
     
    508520inline MacroAssemblerCodePtr<PlatformRegistersPCPtrTag> instructionPointer(const mcontext_t& machineContext)
    509521{
     522#if USE(DARWIN_REGISTER_MACROS)
     523    return *instructionPointer(machineContext->__ss);
     524#else
     525
    510526#if USE(PLATFORM_REGISTERS_WITH_PROFILE)
    511527    void* value = WTF_READ_MACHINE_CONTEXT_PC_WITH_PROFILE(machineContext);
     
    513529    void* value = instructionPointerImpl(const_cast<mcontext_t&>(machineContext));
    514530#endif
     531
    515532    return MacroAssemblerCodePtr<PlatformRegistersPCPtrTag>(value);
     533#endif
    516534}
    517535
     
    520538#if USE(PLATFORM_REGISTERS_WITH_PROFILE)
    521539    WTF_WRITE_MACHINE_CONTEXT_PC_WITH_PROFILE(machineContext, value.executableAddress());
     540#elif USE(DARWIN_REGISTER_MACROS)
     541    setInstructionPointer(machineContext->__ss, value);
    522542#else
    523543    instructionPointerImpl(machineContext) = value.executableAddress();
     
    530550
    531551#if OS(DARWIN) && __DARWIN_UNIX03 && CPU(ARM64)
    532 #if !USE(PLATFORM_REGISTERS_WITH_PROFILE)
    533 inline void*& linkRegisterImpl(PlatformRegisters& regs)
    534 {
    535     return reinterpret_cast<void*&>(regs.__lr);
    536 }
    537 #endif // USE(PLATFORM_REGISTERS_WITH_PROFILE)
    538 
    539552
    540553inline MacroAssemblerCodePtr<PlatformRegistersLRPtrTag> linkRegister(const PlatformRegisters& regs)
     
    543556    void* value = WTF_READ_PLATFORM_REGISTERS_LR_WITH_PROFILE(regs);
    544557#else
    545     void* value = linkRegisterImpl(const_cast<PlatformRegisters&>(regs));
     558    void* value = __darwin_arm_thread_state64_get_lr_fptr(regs);
    546559#endif
    547560    return MacroAssemblerCodePtr<PlatformRegistersLRPtrTag>(value);
     
    553566    WTF_WRITE_PLATFORM_REGISTERS_PC_WITH_PROFILE(regs, value.executableAddress());
    554567#else
    555     linkRegisterImpl(regs) = value.executableAddress();
     568    __darwin_arm_thread_state64_set_lr_fptr(regs, value.executableAddress());
    556569#endif
    557570}
  • trunk/Source/WTF/ChangeLog

    r255139 r255159  
     12020-01-27  Jonathan Bedard  <jbedard@apple.com>
     2
     3        Fix OpenSource iphoneos arm64e build
     4        https://bugs.webkit.org/show_bug.cgi?id=206703
     5
     6        Reviewed by Yusuke Suzuki.
     7
     8        * wtf/PlatformUse.h: Add USE(DARWIN_REGISTER_MACROS) check.
     9
    1102020-01-27  Mark Lam  <mark.lam@apple.com>
    211
  • trunk/Source/WTF/wtf/PlatformUse.h

    r255073 r255159  
    308308#define USE_BMALLOC_MEMORY_FOOTPRINT_API 1
    309309#endif
     310
     311#if OS(DARWIN) && !USE(PLATFORM_REGISTERS_WITH_PROFILE) && (CPU(ARM_THUMB2) || CPU(ARM) || CPU(ARM64))
     312#define USE_DARWIN_REGISTER_MACROS 1
     313#endif
Note: See TracChangeset for help on using the changeset viewer.