Changeset 255159 in webkit
- Timestamp:
- Jan 27, 2020 12:07:23 PM (4 years ago)
- Location:
- trunk/Source
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r255145 r255159 1 2020-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 1 21 2020-01-27 Paulo Matos <pmatos@igalia.com> 2 22 -
trunk/Source/JavaScriptCore/runtime/MachineContext.h
r239427 r255159 59 59 60 60 #if !USE(PLATFORM_REGISTERS_WITH_PROFILE) 61 62 #if !USE(DARWIN_REGISTER_MACROS) 61 63 static inline void*& stackPointerImpl(mcontext_t&); 64 static inline void*& instructionPointerImpl(mcontext_t&); 65 #endif // !USE(DARWIN_REGISTER_MACROS) 66 62 67 static inline void*& framePointerImpl(mcontext_t&); 63 static inline void*& instructionPointerImpl(mcontext_t&);64 68 #endif // !USE(PLATFORM_REGISTERS_WITH_PROFILE) 65 69 … … 82 86 #if OS(WINDOWS) || HAVE(MACHINE_CONTEXT) 83 87 84 #if !USE(PLATFORM_REGISTERS_WITH_PROFILE) 88 #if !USE(PLATFORM_REGISTERS_WITH_PROFILE) && !USE(DARWIN_REGISTER_MACROS) 85 89 static inline void*& stackPointerImpl(PlatformRegisters& regs) 86 90 { … … 94 98 #elif CPU(PPC) || CPU(PPC64) 95 99 return reinterpret_cast<void*&>(regs.__r1); 96 #elif CPU(ARM_THUMB2) || CPU(ARM) || CPU(ARM64)97 return reinterpret_cast<void*&>(regs.__sp);98 100 #else 99 101 #error Unknown Architecture … … 141 143 assertIsNotTagged(value); 142 144 return bitwise_cast<T>(value); 145 #elif USE(DARWIN_REGISTER_MACROS) 146 return bitwise_cast<T>(__darwin_arm_thread_state64_get_sp(regs)); 143 147 #else 144 148 return bitwise_cast<T>(stackPointerImpl(const_cast<PlatformRegisters&>(regs))); … … 152 156 assertIsNotTagged(bitwise_cast<void*>(value)); 153 157 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); 154 160 #else 155 161 stackPointerImpl(regs) = bitwise_cast<void*>(value); … … 168 174 #if HAVE(MACHINE_CONTEXT) 169 175 170 #if !USE(PLATFORM_REGISTERS_WITH_PROFILE) 176 #if !USE(PLATFORM_REGISTERS_WITH_PROFILE) && !USE(DARWIN_REGISTER_MACROS) 171 177 static inline void*& stackPointerImpl(mcontext_t& machineContext) 172 178 { … … 215 221 assertIsNotTagged(value); 216 222 return bitwise_cast<T>(value); 223 #elif USE(DARWIN_REGISTER_MACROS) 224 return stackPointer(machineContext->__ss); 217 225 #else 218 226 return bitwise_cast<T>(stackPointerImpl(const_cast<mcontext_t&>(machineContext))); … … 226 234 assertIsNotTagged(bitwise_cast<void*>(value)); 227 235 WTF_WRITE_MACHINE_CONTEXT_SP_WITH_PROFILE(machineContext, bitwise_cast<void*>(value)); 236 #elif USE(DARWIN_REGISTER_MACROS) 237 return setStackPointer(machineContext->__ss, value); 228 238 #else 229 239 stackPointerImpl(machineContext) = bitwise_cast<void*>(value); … … 386 396 #if OS(WINDOWS) || HAVE(MACHINE_CONTEXT) 387 397 388 #if !USE(PLATFORM_REGISTERS_WITH_PROFILE) 398 #if !USE(PLATFORM_REGISTERS_WITH_PROFILE) && !USE(DARWIN_REGISTER_MACROS) 389 399 static inline void*& instructionPointerImpl(PlatformRegisters& regs) 390 400 { … … 396 406 #elif CPU(X86_64) 397 407 return reinterpret_cast<void*&>(regs.__rip); 398 #elif CPU(ARM_THUMB2) || CPU(ARM) || CPU(ARM64)399 return reinterpret_cast<void*&>(regs.__pc);400 408 #else 401 409 #error Unknown Architecture … … 437 445 #if USE(PLATFORM_REGISTERS_WITH_PROFILE) 438 446 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); 439 449 #else 440 450 void* value = instructionPointerImpl(const_cast<PlatformRegisters&>(regs)); … … 453 463 #if USE(PLATFORM_REGISTERS_WITH_PROFILE) 454 464 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()); 455 467 #else 456 468 instructionPointerImpl(regs) = value.executableAddress(); … … 462 474 #if HAVE(MACHINE_CONTEXT) 463 475 464 #if !USE(PLATFORM_REGISTERS_WITH_PROFILE) 476 #if !USE(PLATFORM_REGISTERS_WITH_PROFILE) && !USE(DARWIN_REGISTER_MACROS) 465 477 static inline void*& instructionPointerImpl(mcontext_t& machineContext) 466 478 { … … 508 520 inline MacroAssemblerCodePtr<PlatformRegistersPCPtrTag> instructionPointer(const mcontext_t& machineContext) 509 521 { 522 #if USE(DARWIN_REGISTER_MACROS) 523 return *instructionPointer(machineContext->__ss); 524 #else 525 510 526 #if USE(PLATFORM_REGISTERS_WITH_PROFILE) 511 527 void* value = WTF_READ_MACHINE_CONTEXT_PC_WITH_PROFILE(machineContext); … … 513 529 void* value = instructionPointerImpl(const_cast<mcontext_t&>(machineContext)); 514 530 #endif 531 515 532 return MacroAssemblerCodePtr<PlatformRegistersPCPtrTag>(value); 533 #endif 516 534 } 517 535 … … 520 538 #if USE(PLATFORM_REGISTERS_WITH_PROFILE) 521 539 WTF_WRITE_MACHINE_CONTEXT_PC_WITH_PROFILE(machineContext, value.executableAddress()); 540 #elif USE(DARWIN_REGISTER_MACROS) 541 setInstructionPointer(machineContext->__ss, value); 522 542 #else 523 543 instructionPointerImpl(machineContext) = value.executableAddress(); … … 530 550 531 551 #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 539 552 540 553 inline MacroAssemblerCodePtr<PlatformRegistersLRPtrTag> linkRegister(const PlatformRegisters& regs) … … 543 556 void* value = WTF_READ_PLATFORM_REGISTERS_LR_WITH_PROFILE(regs); 544 557 #else 545 void* value = linkRegisterImpl(const_cast<PlatformRegisters&>(regs));558 void* value = __darwin_arm_thread_state64_get_lr_fptr(regs); 546 559 #endif 547 560 return MacroAssemblerCodePtr<PlatformRegistersLRPtrTag>(value); … … 553 566 WTF_WRITE_PLATFORM_REGISTERS_PC_WITH_PROFILE(regs, value.executableAddress()); 554 567 #else 555 linkRegisterImpl(regs) = value.executableAddress();568 __darwin_arm_thread_state64_set_lr_fptr(regs, value.executableAddress()); 556 569 #endif 557 570 } -
trunk/Source/WTF/ChangeLog
r255139 r255159 1 2020-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 1 10 2020-01-27 Mark Lam <mark.lam@apple.com> 2 11 -
trunk/Source/WTF/wtf/PlatformUse.h
r255073 r255159 308 308 #define USE_BMALLOC_MEMORY_FOOTPRINT_API 1 309 309 #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.