From f558a765dad2258176fc70dbecc035f9ed46c8e9 Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Mon, 30 Mar 2020 10:37:57 +0200 Subject: [PATCH] src: remove loop_init_failed_ from Worker class MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit There’s no reason for this to not be stored alongside the loop data structure itself. PR-URL: https://github.com/nodejs/node/pull/32562 Refs: https://github.com/nodejs/node/pull/32344 Reviewed-By: Colin Ihrig Reviewed-By: Denys Otrishko Reviewed-By: James M Snell --- src/node_worker.cc | 11 +++++++---- src/node_worker.h | 1 - 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/node_worker.cc b/src/node_worker.cc index ade29cd60edd69..611d50220add83 100644 --- a/src/node_worker.cc +++ b/src/node_worker.cc @@ -135,10 +135,10 @@ class WorkerThreadData { uv_err_name_r(ret, err_buf, sizeof(err_buf)); w->custom_error_ = "ERR_WORKER_INIT_FAILED"; w->custom_error_str_ = err_buf; - w->loop_init_failed_ = true; w->stopped_ = true; return; } + loop_init_failed_ = false; std::shared_ptr allocator = ArrayBufferAllocator::Create(); @@ -194,6 +194,7 @@ class WorkerThreadData { } if (isolate != nullptr) { + CHECK(!loop_init_failed_); bool platform_finished = false; isolate_data_.reset(); @@ -212,18 +213,20 @@ class WorkerThreadData { // Wait until the platform has cleaned up all relevant resources. while (!platform_finished) { - CHECK(!w_->loop_init_failed_); uv_run(&loop_, UV_RUN_ONCE); } } - if (!w_->loop_init_failed_) { + if (!loop_init_failed_) { CheckedUvLoopClose(&loop_); } } + bool loop_is_usable() const { return !loop_init_failed_; } + private: Worker* const w_; uv_loop_t loop_; + bool loop_init_failed_ = true; DeleteFnPtr isolate_data_; friend class Worker; @@ -253,7 +256,7 @@ void Worker::Run() { WorkerThreadData data(this); if (isolate_ == nullptr) return; - CHECK(!data.w_->loop_init_failed_); + CHECK(data.loop_is_usable()); Debug(this, "Starting worker with id %llu", thread_id_.id); { diff --git a/src/node_worker.h b/src/node_worker.h index 384a9f160e09e8..b962e5757a6f75 100644 --- a/src/node_worker.h +++ b/src/node_worker.h @@ -83,7 +83,6 @@ class Worker : public AsyncWrap { bool thread_joined_ = true; const char* custom_error_ = nullptr; std::string custom_error_str_; - bool loop_init_failed_ = false; int exit_code_ = 0; ThreadId thread_id_; uintptr_t stack_base_ = 0;