Ignore:
Timestamp:
May 31, 2017, 11:16:53 AM (8 years ago)
Author:
[email protected]
Message:

Reland r216808, underlying lldb bug has been fixed.
https://bugs.webkit.org/show_bug.cgi?id=172759

Source/JavaScriptCore:

Unreviewed, relanding old patch. See: rdar://problem/31183352

  • API/tests/ExecutionTimeLimitTest.cpp:

(dispatchTermitateCallback):
(testExecutionTimeLimit):

  • runtime/JSLock.cpp:

(JSC::JSLock::didAcquireLock):

  • runtime/Options.cpp:

(JSC::overrideDefaults):
(JSC::Options::initialize):

  • runtime/Options.h:
  • runtime/VMTraps.cpp:

(JSC::SignalContext::SignalContext):
(JSC::SignalContext::adjustPCToPointToTrappingInstruction):
(JSC::installSignalHandler):
(JSC::VMTraps::SignalSender::send):

  • tools/SigillCrashAnalyzer.cpp:

(JSC::SignalContext::SignalContext):
(JSC::SignalContext::dump):
(JSC::installCrashHandler):

  • wasm/WasmBBQPlan.cpp:

(JSC::Wasm::BBQPlan::compileFunctions):

  • wasm/WasmFaultSignalHandler.cpp:

(JSC::Wasm::trapHandler):
(JSC::Wasm::enableFastMemory):

  • wasm/WasmMachineThreads.cpp:

(JSC::Wasm::resetInstructionCacheOnAllThreads):

Source/WTF:

Unreviewed, relanding old patch. See: rdar://problem/31183352

  • Configurations/WTF.xcconfig:
  • WTF.xcodeproj/project.pbxproj:
  • wtf/Platform.h:
  • wtf/PlatformRegisters.h:

(WTF::registersFromUContext):

  • wtf/StackBounds.h:

(WTF::StackBounds::StackBounds):

  • wtf/ThreadHolder.cpp:

(WTF::ThreadHolder::~ThreadHolder):

  • wtf/ThreadMessage.cpp:

(WTF::sendMessageUsingSignal):
(WTF::sendMessageUsingMach):
(WTF::deliverMessagesUsingMach):
(WTF::sendMessageScoped):

  • wtf/ThreadMessage.h:

(WTF::sendMessage):

  • wtf/Threading.h:

(WTF::Thread::machThread):

  • wtf/mac/MachExceptions.defs: Copied from Source/WTF/wtf/ThreadMessage.h.
  • wtf/threads/Signals.cpp:

(WTF::startMachExceptionHandlerThread):
(WTF::fromMachException):
(WTF::toMachMask):
(WTF::handleSignalsWithMach):
(WTF::setExceptionPorts):
(WTF::activeThreads):
(WTF::registerThreadForMachExceptionHandling):
(WTF::unregisterThreadForMachExceptionHandling):
(WTF::installSignalHandler):
(WTF::jscSignalHandler):

  • wtf/threads/Signals.h:

Tools:

Unreviewed, relanding old patch. See: rdar://problem/31183352

  • TestWebKitAPI/Tests/WTF/ThreadMessages.cpp:

(runThreadMessageTest):
(TEST):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/runtime/VMTraps.cpp

    r216827 r217611  
    5454
    5555struct SignalContext {
    56     SignalContext(mcontext_t& mcontext)
    57         : mcontext(mcontext)
    58         , trapPC(MachineContext::instructionPointer(mcontext))
    59         , stackPointer(MachineContext::stackPointer(mcontext))
    60         , framePointer(MachineContext::framePointer(mcontext))
     56    SignalContext(PlatformRegisters& registers)
     57        : registers(registers)
     58        , trapPC(MachineContext::instructionPointer(registers))
     59        , stackPointer(MachineContext::stackPointer(registers))
     60        , framePointer(MachineContext::framePointer(registers))
    6161    {
    6262#if CPU(X86_64) || CPU(X86)
     
    6969    {
    7070#if CPU(X86_64) || CPU(X86)
    71         MachineContext::instructionPointer(mcontext) = trapPC;
    72 #endif
    73     }
    74 
    75     mcontext_t& mcontext;
     71        MachineContext::instructionPointer(registers) = trapPC;
     72#endif
     73    }
     74
     75    PlatformRegisters& registers;
    7676    void* trapPC;
    7777    void* stackPointer;
     
    131131static void installSignalHandler()
    132132{
    133     installSignalHandler(Signal::Trap, [] (int, siginfo_t*, void* uap) -> SignalAction {
    134         SignalContext context(static_cast<ucontext_t*>(uap)->uc_mcontext);
     133    installSignalHandler(Signal::Trap, [] (Signal, SigInfo&, PlatformRegisters& registers) -> SignalAction {
     134        SignalContext context(registers);
    135135
    136136        if (!isJITPC(context.trapPC))
     
    405405            auto optionalOwnerThread = vm.ownerThread();
    406406            if (optionalOwnerThread) {
    407                 sendMessage(*optionalOwnerThread.value().get(), [] (siginfo_t*, ucontext_t* ucontext) -> void {
    408                     SignalContext context(ucontext->uc_mcontext);
     407                sendMessage(*optionalOwnerThread.value().get(), [] (PlatformRegisters& registers) -> void {
     408                    SignalContext context(registers);
    409409                    auto activeVMAndStackBounds = findActiveVMAndStackBounds(context);
    410410                    if (activeVMAndStackBounds) {
Note: See TracChangeset for help on using the changeset viewer.