Example #1
0
MainThreadDebugger::MainThreadDebugger(v8::Isolate* isolate)
    : ThreadDebugger(isolate),
      m_taskRunner(wrapUnique(new InspectorTaskRunner())),
      m_paused(false) {
  MutexLocker locker(creationMutex());
  ASSERT(!s_instance);
  s_instance = this;
}
void MainThreadDebugger::interruptMainThreadAndRun(std::unique_ptr<InspectorTaskRunner::Task> task)
{
    MutexLocker locker(creationMutex());
    if (s_instance) {
        s_instance->m_taskRunner->appendTask(std::move(task));
        s_instance->m_taskRunner->interruptAndRunAllTasksDontWait(s_instance->m_isolate);
    }
}
MainThreadDebugger::MainThreadDebugger(PassOwnPtr<ClientMessageLoop> clientMessageLoop, v8::Isolate* isolate)
    : ThreadDebugger(isolate)
    , m_clientMessageLoop(clientMessageLoop)
    , m_taskRunner(adoptPtr(new InspectorTaskRunner(isolate)))
{
    MutexLocker locker(creationMutex());
    ASSERT(!s_instance);
    s_instance = this;
}
MainThreadDebugger::MainThreadDebugger(PassOwnPtr<ClientMessageLoop> clientMessageLoop, v8::Isolate* isolate)
    : ScriptDebuggerBase(isolate, ScriptDebugServer::create(isolate, this))
    , m_clientMessageLoop(clientMessageLoop)
    , m_pausedFrame(nullptr)
{
    MutexLocker locker(creationMutex());
    ASSERT(!s_instance);
    s_instance = this;
}
MainThreadDebugger::~MainThreadDebugger()
{
    MutexLocker locker(creationMutex());
    ASSERT(s_instance == this);
    s_instance = nullptr;
}
void MainThreadDebugger::interruptMainThreadAndRun(PassOwnPtr<InspectorTaskRunner::Task> task)
{
    MutexLocker locker(creationMutex());
    if (s_instance)
        s_instance->m_taskRunner->interruptAndRun(task);
}
void MainThreadDebugger::interruptMainThreadAndRun(PassOwnPtr<ScriptDebugServer::Task> task)
{
    MutexLocker locker(creationMutex());
    if (s_instance)
        s_instance->scriptDebugServer()->interruptAndRun(task);
}