Commit f92c252fe98 for nodejs
commit f92c252fe984865e1f0c2e694eb0fe63ce919807
Author: Joyee Cheung <joyeec9h3@gmail.com>
Date: Tue Oct 6 14:30:36 2026 +0200
src, test: migrate to cppgc-owned v8::MicrotaskQueue
Co-Authored-By: Igor Sheludko <isheludko@gmail.com>
Signed-off-by: Joyee Cheung <joyeec9h3@gmail.com>
PR-URL: https://github.com/nodejs/node/pull/66537
Reviewed-By: Richard Lau <richard.lau@ibm.com>
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
Reviewed-By: Filip Skokan <panva.ip@gmail.com>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
diff --git a/src/node_contextify.cc b/src/node_contextify.cc
index 80efadd7a82..989ce5d6750 100644
--- a/src/node_contextify.cc
+++ b/src/node_contextify.cc
@@ -155,7 +155,7 @@ ContextifyContext* ContextifyContext::New(Environment* env,
MicrotaskQueue* queue =
options->own_microtask_queue
- ? options->own_microtask_queue.get()
+ ? options->own_microtask_queue
: env->isolate()->GetCurrentContext()->GetMicrotaskQueue();
Local<Context> v8_context;
@@ -176,9 +176,7 @@ ContextifyContext::ContextifyContext(Environment* env,
Local<Object> wrapper,
Local<Context> v8_context,
ContextOptions* options)
- : microtask_queue_(options->own_microtask_queue
- ? options->own_microtask_queue.release()
- : nullptr) {
+ : microtask_queue_(options->own_microtask_queue) {
CppgcMixin::Wrap(this, env, wrapper);
context_.Reset(env->isolate(), v8_context);
diff --git a/src/node_contextify.h b/src/node_contextify.h
index 446cab2f580..be3034da39f 100644
--- a/src/node_contextify.h
+++ b/src/node_contextify.h
@@ -18,7 +18,7 @@ struct ContextOptions {
v8::Local<v8::String> origin;
v8::Local<v8::Boolean> allow_code_gen_strings;
v8::Local<v8::Boolean> allow_code_gen_wasm;
- std::unique_ptr<v8::MicrotaskQueue> own_microtask_queue;
+ v8::MicrotaskQueue* own_microtask_queue = nullptr;
v8::Local<v8::Symbol> host_defined_options_id;
bool vanilla = false;
};
@@ -122,7 +122,7 @@ class ContextifyContext final : CPPGC_MIXIN(ContextifyContext) {
}
inline v8::MicrotaskQueue* microtask_queue() const {
- return microtask_queue_.get();
+ return microtask_queue_;
}
template <typename T>
@@ -186,7 +186,7 @@ class ContextifyContext final : CPPGC_MIXIN(ContextifyContext) {
const v8::PropertyCallbackInfo<v8::Array>& args);
v8::TracedReference<v8::Context> context_;
- std::unique_ptr<v8::MicrotaskQueue> microtask_queue_;
+ cppgc::Persistent<v8::MicrotaskQueue> microtask_queue_;
};
class ContextifyScript final : CPPGC_MIXIN(ContextifyScript) {
diff --git a/test/cctest/test_environment.cc b/test/cctest/test_environment.cc
index 7b3458a380f..1f6d3012e25 100644
--- a/test/cctest/test_environment.cc
+++ b/test/cctest/test_environment.cc
@@ -1062,15 +1062,16 @@ TEST_F(EnvironmentTest, NestedMicrotaskQueue) {
const v8::HandleScope handle_scope(isolate_);
const Argv argv;
- std::unique_ptr<v8::MicrotaskQueue> queue = v8::MicrotaskQueue::New(
- isolate_, v8::MicrotasksPolicy::kExplicit);
+ v8::MicrotaskQueue* queue =
+ v8::MicrotaskQueue::New(isolate_, v8::MicrotasksPolicy::kExplicit);
+
v8::Local<v8::Context> context =
v8::Context::New(isolate_,
nullptr,
{},
{},
v8::DeserializeInternalFieldsCallback(),
- queue.get());
+ queue);
node::InitializeContext(context);
v8::Context::Scope context_scope(context);