Skip to content

Commit 987b6ce

Browse files
gahaasnodejs-github-bot
authored andcommitted
src: replace uses of deprecated v8::External APIs
1 parent e1d6d5c commit 987b6ce

File tree

6 files changed

+38
-24
lines changed

6 files changed

+38
-24
lines changed

src/crypto/crypto_context.cc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2337,7 +2337,8 @@ int SecureContext::TicketCompatibilityCallback(SSL* ssl,
23372337
void SecureContext::CtxGetter(const FunctionCallbackInfo<Value>& info) {
23382338
SecureContext* sc;
23392339
ASSIGN_OR_RETURN_UNWRAP(&sc, info.This());
2340-
Local<External> ext = External::New(info.GetIsolate(), sc->ctx_.get());
2340+
Local<External> ext = External::New(
2341+
info.GetIsolate(), sc->ctx_.get(), v8::kExternalPointerTypeTagDefault);
23412342
info.GetReturnValue().Set(ext);
23422343
}
23432344

src/js_native_api_v8.cc

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -355,8 +355,8 @@ inline napi_status Unwrap(napi_env env,
355355
auto val = obj->GetPrivate(context, NAPI_PRIVATE_KEY(context, wrapper))
356356
.ToLocalChecked();
357357
RETURN_STATUS_IF_FALSE(env, val->IsExternal(), napi_invalid_arg);
358-
Reference* reference =
359-
static_cast<v8impl::Reference*>(val.As<v8::External>()->Value());
358+
Reference* reference = static_cast<v8impl::Reference*>(
359+
val.As<v8::External>()->Value(v8::kExternalPointerTypeTagDefault));
360360

361361
if (result) {
362362
*result = reference->Data();
@@ -395,14 +395,16 @@ class CallbackBundle {
395395
bundle->cb_data = data;
396396
bundle->env = env;
397397

398-
v8::Local<v8::Value> cbdata = v8::External::New(env->isolate, bundle);
398+
v8::Local<v8::Value> cbdata = v8::External::New(
399+
env->isolate, bundle, v8::kExternalPointerTypeTagDefault);
399400
ReferenceWithFinalizer::New(
400401
env, cbdata, 0, ReferenceOwnership::kRuntime, Delete, bundle, nullptr);
401402
return cbdata;
402403
}
403404

404405
static CallbackBundle* FromCallbackData(v8::Local<v8::Value> data) {
405-
return reinterpret_cast<CallbackBundle*>(data.As<v8::External>()->Value());
406+
return reinterpret_cast<CallbackBundle*>(
407+
data.As<v8::External>()->Value(v8::kExternalPointerTypeTagDefault));
406408
}
407409

408410
public:
@@ -573,9 +575,11 @@ inline napi_status Wrap(napi_env env,
573575
env, obj, 0, v8impl::ReferenceOwnership::kRuntime, native_object);
574576
}
575577

576-
CHECK(obj->SetPrivate(context,
577-
NAPI_PRIVATE_KEY(context, wrapper),
578-
v8::External::New(env->isolate, reference))
578+
CHECK(obj->SetPrivate(
579+
context,
580+
NAPI_PRIVATE_KEY(context, wrapper),
581+
v8::External::New(
582+
env->isolate, reference, v8::kExternalPointerTypeTagDefault))
579583
.FromJust());
580584

581585
return GET_RETURN_STATUS(env);
@@ -842,7 +846,8 @@ class ExternalWrapper {
842846
public:
843847
static v8::Local<v8::External> New(napi_env env, void* data) {
844848
ExternalWrapper* wrapper = new ExternalWrapper(data);
845-
v8::Local<v8::External> external = v8::External::New(env->isolate, wrapper);
849+
v8::Local<v8::External> external = v8::External::New(
850+
env->isolate, wrapper, v8::kExternalPointerTypeTagDefault);
846851
wrapper->persistent_.Reset(env->isolate, external);
847852
wrapper->persistent_.SetWeak(
848853
wrapper, WeakCallback, v8::WeakCallbackType::kParameter);
@@ -851,7 +856,8 @@ class ExternalWrapper {
851856
}
852857

853858
static ExternalWrapper* From(v8::Local<v8::External> external) {
854-
return static_cast<ExternalWrapper*>(external->Value());
859+
return static_cast<ExternalWrapper*>(
860+
external->Value(v8::kExternalPointerTypeTagDefault));
855861
}
856862

857863
void* Data() { return data_; }

src/node_modules.cc

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -552,8 +552,10 @@ void GetCompileCacheEntry(const FunctionCallbackInfo<Value>& args) {
552552

553553
v8::LocalVector<v8::Name> names(isolate,
554554
{FIXED_ONE_BYTE_STRING(isolate, "external")});
555-
v8::LocalVector<v8::Value> values(isolate,
556-
{v8::External::New(isolate, cache_entry)});
555+
v8::LocalVector<v8::Value> values(
556+
isolate,
557+
{v8::External::New(
558+
isolate, cache_entry, v8::kExternalPointerTypeTagDefault)});
557559
if (cache_entry->cache != nullptr) {
558560
Debug(env,
559561
DebugCategory::COMPILE_CACHE,
@@ -592,8 +594,8 @@ void SaveCompileCacheEntry(const FunctionCallbackInfo<Value>& args) {
592594
DCHECK(env->use_compile_cache());
593595
CHECK(args[0]->IsExternal());
594596
CHECK(args[1]->IsString()); // TODO(joyeecheung): accept buffer.
595-
auto* cache_entry =
596-
static_cast<CompileCacheEntry*>(args[0].As<External>()->Value());
597+
auto* cache_entry = static_cast<CompileCacheEntry*>(
598+
args[0].As<External>()->Value(v8::kExternalPointerTypeTagDefault));
597599
Utf8Value utf8(isolate, args[1].As<String>());
598600
env->compile_cache_handler()->MaybeSave(cache_entry, utf8.ToStringView());
599601
}

src/node_util.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ static void GetExternalValue(
9393
Isolate* isolate = args.GetIsolate();
9494
Local<External> external = args[0].As<External>();
9595

96-
void* ptr = external->Value();
96+
void* ptr = external->Value(v8::kExternalPointerTypeTagDefault);
9797
uint64_t value = reinterpret_cast<uint64_t>(ptr);
9898
Local<BigInt> ret = BigInt::NewFromUnsigned(isolate, value);
9999
args.GetReturnValue().Set(ret);

src/stream_base.cc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -653,7 +653,8 @@ void StreamBase::GetExternal(const FunctionCallbackInfo<Value>& args) {
653653
StreamBase* wrap = StreamBase::FromObject(args.This().As<Object>());
654654
if (wrap == nullptr) return;
655655

656-
Local<External> ext = External::New(args.GetIsolate(), wrap);
656+
Local<External> ext = External::New(
657+
args.GetIsolate(), wrap, v8::kExternalPointerTypeTagDefault);
657658
args.GetReturnValue().Set(ext);
658659
}
659660

test/cctest/test_environment.cc

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -700,14 +700,18 @@ TEST_F(EnvironmentTest, NestedMicrotaskQueue) {
700700

701701
using IntVec = std::vector<int>;
702702
IntVec callback_calls;
703-
v8::Local<v8::Function> must_call = v8::Function::New(
704-
context,
705-
[](const v8::FunctionCallbackInfo<v8::Value>& info) {
706-
IntVec* callback_calls = static_cast<IntVec*>(
707-
info.Data().As<v8::External>()->Value());
708-
callback_calls->push_back(info[0].As<v8::Int32>()->Value());
709-
},
710-
v8::External::New(isolate_, static_cast<void*>(&callback_calls)))
703+
v8::Local<v8::Function> must_call =
704+
v8::Function::New(
705+
context,
706+
[](const v8::FunctionCallbackInfo<v8::Value>& info) {
707+
IntVec* callback_calls =
708+
static_cast<IntVec*>(info.Data().As<v8::External>()->Value(
709+
v8::kExternalPointerTypeTagDefault));
710+
callback_calls->push_back(info[0].As<v8::Int32>()->Value());
711+
},
712+
v8::External::New(isolate_,
713+
static_cast<void*>(&callback_calls),
714+
v8::kExternalPointerTypeTagDefault))
711715
.ToLocalChecked();
712716
context->Global()->Set(
713717
context,

0 commit comments

Comments
 (0)