Skip to content
Closed
Prev Previous commit
Next Next commit
src: use env->RequestInterrupt() for inspector io thread start
This cleans up `Agent::RequestIoThreadStart()` significantly.
  • Loading branch information
addaleax committed Mar 27, 2020
commit 23b2da658b4c915dc7668268d71ba363fec4a2a7
27 changes: 4 additions & 23 deletions src/inspector_agent.cc
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,6 @@ using v8::Message;
using v8::Object;
using v8::String;
using v8::Task;
using v8::TaskRunner;
using v8::Value;

using v8_inspector::StringBuffer;
Expand All @@ -63,18 +62,6 @@ static std::atomic_bool start_io_thread_async_initialized { false };
// Protects the Agent* stored in start_io_thread_async.data.
static Mutex start_io_thread_async_mutex;

class StartIoTask : public Task {
public:
explicit StartIoTask(Agent* agent) : agent(agent) {}

void Run() override {
agent->StartIoThread();
}

private:
Agent* agent;
};

std::unique_ptr<StringBuffer> ToProtocolString(Isolate* isolate,
Local<Value> value) {
TwoByteValue buffer(isolate, value);
Expand All @@ -86,10 +73,6 @@ void StartIoThreadAsyncCallback(uv_async_t* handle) {
static_cast<Agent*>(handle->data)->StartIoThread();
}

void StartIoInterrupt(Isolate* isolate, void* agent) {
static_cast<Agent*>(agent)->StartIoThread();
}


#ifdef __POSIX__
static void StartIoThreadWakeup(int signo, siginfo_t* info, void* ucontext) {
Expand Down Expand Up @@ -969,12 +952,10 @@ void Agent::RequestIoThreadStart() {
// for IO events)
CHECK(start_io_thread_async_initialized);
uv_async_send(&start_io_thread_async);
Isolate* isolate = parent_env_->isolate();
v8::Platform* platform = parent_env_->isolate_data()->platform();
std::shared_ptr<TaskRunner> taskrunner =
platform->GetForegroundTaskRunner(isolate);
taskrunner->PostTask(std::make_unique<StartIoTask>(this));
isolate->RequestInterrupt(StartIoInterrupt, this);
parent_env_->RequestInterrupt([this](Environment*) {
StartIoThread();
});

CHECK(start_io_thread_async_initialized);
uv_async_send(&start_io_thread_async);
}
Expand Down