From 11668c70d24a8089cb82102cdb587ba415732ded Mon Sep 17 00:00:00 2001 From: Andreas Haas Date: Wed, 21 Jan 2026 13:44:34 +0100 Subject: [PATCH] Replace uses of deprecated v8::External APIs --- src/crypto/crypto_context.cc | 3 ++- src/js_native_api_v8.cc | 18 ++++++++++++------ src/node_modules.cc | 6 ++++-- src/node_util.cc | 2 +- src/stream_base.cc | 3 ++- test/cctest/test_environment.cc | 6 ++++-- 6 files changed, 25 insertions(+), 13 deletions(-) diff --git a/src/crypto/crypto_context.cc b/src/crypto/crypto_context.cc index 0e0546c313fe94..20b0d54290277b 100644 --- a/src/crypto/crypto_context.cc +++ b/src/crypto/crypto_context.cc @@ -2314,7 +2314,8 @@ int SecureContext::TicketCompatibilityCallback(SSL* ssl, void SecureContext::CtxGetter(const FunctionCallbackInfo& info) { SecureContext* sc; ASSIGN_OR_RETURN_UNWRAP(&sc, info.This()); - Local ext = External::New(info.GetIsolate(), sc->ctx_.get()); + Local ext = External::New(info.GetIsolate(), sc->ctx_.get(), + v8::kExternalPointerTypeTagDefault); info.GetReturnValue().Set(ext); } diff --git a/src/js_native_api_v8.cc b/src/js_native_api_v8.cc index 8c4062c84275bc..efe31b61d1290f 100644 --- a/src/js_native_api_v8.cc +++ b/src/js_native_api_v8.cc @@ -356,7 +356,8 @@ inline napi_status Unwrap(napi_env env, .ToLocalChecked(); RETURN_STATUS_IF_FALSE(env, val->IsExternal(), napi_invalid_arg); Reference* reference = - static_cast(val.As()->Value()); + static_cast(val.As()->Value( + v8::kExternalPointerTypeTagDefault)); if (result) { *result = reference->Data(); @@ -396,14 +397,16 @@ class CallbackBundle { bundle->cb_data = data; bundle->env = env; - v8::Local cbdata = v8::External::New(env->isolate, bundle); + v8::Local cbdata = v8::External::New(env->isolate, bundle, + v8::kExternalPointerTypeTagDefault); ReferenceWithFinalizer::New( env, cbdata, 0, ReferenceOwnership::kRuntime, Delete, bundle, nullptr); return cbdata; } static CallbackBundle* FromCallbackData(v8::Local data) { - return reinterpret_cast(data.As()->Value()); + return reinterpret_cast(data.As()->Value( + v8::kExternalPointerTypeTagDefault)); } public: @@ -576,7 +579,8 @@ inline napi_status Wrap(napi_env env, CHECK(obj->SetPrivate(context, NAPI_PRIVATE_KEY(context, wrapper), - v8::External::New(env->isolate, reference)) + v8::External::New(env->isolate, reference, + v8::kExternalPointerTypeTagDefault)) .FromJust()); return GET_RETURN_STATUS(env); @@ -843,7 +847,8 @@ class ExternalWrapper { public: static v8::Local New(napi_env env, void* data) { ExternalWrapper* wrapper = new ExternalWrapper(data); - v8::Local external = v8::External::New(env->isolate, wrapper); + v8::Local external = v8::External::New(env->isolate, wrapper, + v8::kExternalPointerTypeTagDefault); wrapper->persistent_.Reset(env->isolate, external); wrapper->persistent_.SetWeak( wrapper, WeakCallback, v8::WeakCallbackType::kParameter); @@ -852,7 +857,8 @@ class ExternalWrapper { } static ExternalWrapper* From(v8::Local external) { - return static_cast(external->Value()); + return static_cast(external->Value( + v8::kExternalPointerTypeTagDefault)); } void* Data() { return data_; } diff --git a/src/node_modules.cc b/src/node_modules.cc index 9131c4f27e7d83..e8685ef157aaca 100644 --- a/src/node_modules.cc +++ b/src/node_modules.cc @@ -516,7 +516,8 @@ void GetCompileCacheEntry(const FunctionCallbackInfo& args) { v8::LocalVector names(isolate, {FIXED_ONE_BYTE_STRING(isolate, "external")}); v8::LocalVector values(isolate, - {v8::External::New(isolate, cache_entry)}); + {v8::External::New(isolate, cache_entry, + v8::kExternalPointerTypeTagDefault)}); if (cache_entry->cache != nullptr) { Debug(env, DebugCategory::COMPILE_CACHE, @@ -556,7 +557,8 @@ void SaveCompileCacheEntry(const FunctionCallbackInfo& args) { CHECK(args[0]->IsExternal()); CHECK(args[1]->IsString()); // TODO(joyeecheung): accept buffer. auto* cache_entry = - static_cast(args[0].As()->Value()); + static_cast(args[0].As()->Value( + v8::kExternalPointerTypeTagDefault)); Utf8Value utf8(isolate, args[1].As()); env->compile_cache_handler()->MaybeSave(cache_entry, utf8.ToStringView()); } diff --git a/src/node_util.cc b/src/node_util.cc index 0306e0b5d85269..687706beed778d 100644 --- a/src/node_util.cc +++ b/src/node_util.cc @@ -93,7 +93,7 @@ static void GetExternalValue( Isolate* isolate = args.GetIsolate(); Local external = args[0].As(); - void* ptr = external->Value(); + void* ptr = external->Value(v8::kExternalPointerTypeTagDefault); uint64_t value = reinterpret_cast(ptr); Local ret = BigInt::NewFromUnsigned(isolate, value); args.GetReturnValue().Set(ret); diff --git a/src/stream_base.cc b/src/stream_base.cc index 566204e667c8e8..7d510f46974690 100644 --- a/src/stream_base.cc +++ b/src/stream_base.cc @@ -653,7 +653,8 @@ void StreamBase::GetExternal(const FunctionCallbackInfo& args) { StreamBase* wrap = StreamBase::FromObject(args.This().As()); if (wrap == nullptr) return; - Local ext = External::New(args.GetIsolate(), wrap); + Local ext = External::New(args.GetIsolate(), wrap, + v8::kExternalPointerTypeTagDefault); args.GetReturnValue().Set(ext); } diff --git a/test/cctest/test_environment.cc b/test/cctest/test_environment.cc index b966a78807b5e7..d9d45c7d5dc931 100644 --- a/test/cctest/test_environment.cc +++ b/test/cctest/test_environment.cc @@ -704,10 +704,12 @@ TEST_F(EnvironmentTest, NestedMicrotaskQueue) { context, [](const v8::FunctionCallbackInfo& info) { IntVec* callback_calls = static_cast( - info.Data().As()->Value()); + info.Data().As()->Value( + v8::kExternalPointerTypeTagDefault)); callback_calls->push_back(info[0].As()->Value()); }, - v8::External::New(isolate_, static_cast(&callback_calls))) + v8::External::New(isolate_, static_cast(&callback_calls), + v8::kExternalPointerTypeTagDefault)) .ToLocalChecked(); context->Global()->Set( context,