src: use env->RequestInterrupt() for inspector io thread start

This cleans up `Agent::RequestIoThreadStart()` significantly.

PR-URL: https://github.com/nodejs/node/pull/32523
Reviewed-By: Matheus Marchini <mat@mmarchini.me>
Reviewed-By: James M Snell <jasnell@gmail.com>
pull/32771/head
Anna Henningsen 2020-03-22 19:03:24 +01:00
parent 583edd9526
commit 32e3a6bb87
No known key found for this signature in database
GPG Key ID: A94130F0BFC8EBE9
1 changed files with 4 additions and 23 deletions

View File

@ -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;
@ -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);
@ -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) {
@ -978,12 +961,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);
}