Skip to content

Commit 56eecf0

Browse files
authored
chore: use tags instead of deprecated v8 api (#5789)
Use kExternalPointerTypeTagDefault in functions that now need pointer tags.
1 parent c284f9c commit 56eecf0

File tree

2 files changed

+10
-9
lines changed

2 files changed

+10
-9
lines changed

src/workerd/api/capnp.h

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -218,8 +218,8 @@ class CapnpTypeWrapper: private CapnpTypeWrapperBase {
218218
void* schemaAsPtr;
219219
memcpy(&schemaAsPtr, &schema, sizeof(schema));
220220

221-
auto constructor = v8::FunctionTemplate::New(
222-
js.v8Isolate, &constructorCallback, v8::External::New(js.v8Isolate, schemaAsPtr));
221+
auto constructor = v8::FunctionTemplate::New(js.v8Isolate, &constructorCallback,
222+
v8::External::New(js.v8Isolate, schemaAsPtr, v8::kExternalPointerTypeTagDefault));
223223

224224
auto prototype = constructor->PrototypeTemplate();
225225
auto signature = v8::Signature::New(js.v8Isolate, constructor);
@@ -323,16 +323,16 @@ class CapnpTypeWrapper: private CapnpTypeWrapperBase {
323323
auto name = jsg::v8StrIntern(js.v8Isolate, method.getProto().getName());
324324
prototype->Set(name,
325325
v8::FunctionTemplate::New(js.v8Isolate, &methodCallback,
326-
v8::External::New(js.v8Isolate, &method), signature, 0,
327-
v8::ConstructorBehavior::kThrow));
326+
v8::External::New(js.v8Isolate, &method, v8::kExternalPointerTypeTagDefault),
327+
signature, 0, v8::ConstructorBehavior::kThrow));
328328
}
329329
}
330330

331331
static void constructorCallback(const v8::FunctionCallbackInfo<v8::Value>& args) {
332332
jsg::liftKj(args, [&]() {
333333
auto data = args.Data();
334334
KJ_ASSERT(data->IsExternal());
335-
void* schemaAsPtr = data.As<v8::External>()->Value();
335+
void* schemaAsPtr = data.As<v8::External>()->Value(v8::kExternalPointerTypeTagDefault);
336336
capnp::Schema schema;
337337
memcpy(&schema, &schemaAsPtr, sizeof(schema));
338338

@@ -365,8 +365,8 @@ class CapnpTypeWrapper: private CapnpTypeWrapperBase {
365365
jsg::liftKj(args, [&]() {
366366
auto data = args.Data();
367367
KJ_ASSERT(data->IsExternal());
368-
auto& method =
369-
*reinterpret_cast<capnp::InterfaceSchema::Method*>(data.As<v8::External>()->Value());
368+
auto& method = *reinterpret_cast<capnp::InterfaceSchema::Method*>(
369+
data.As<v8::External>()->Value(v8::kExternalPointerTypeTagDefault));
370370

371371
auto& js = jsg::Lock::from(args.GetIsolate());
372372
auto obj = args.This();

src/workerd/jsg/jsvalue.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -530,7 +530,8 @@ inline kj::Maybe<T> JsValue::tryCast() const {
530530
template <typename T>
531531
inline kj::Maybe<T&> JsValue::tryGetExternal(Lock& js, const JsValue& value) {
532532
if (!value.isExternal()) return kj::none;
533-
return kj::Maybe<T&>(*static_cast<T*>(value.inner.As<v8::External>()->Value()));
533+
return kj::Maybe<T&>(
534+
*static_cast<T*>(value.inner.As<v8::External>()->Value(v8::kExternalPointerTypeTagDefault)));
534535
}
535536

536537
template <typename T>
@@ -908,7 +909,7 @@ inline JsMap Lock::map() {
908909
}
909910

910911
inline JsValue Lock::external(void* ptr) {
911-
return JsValue(v8::External::New(v8Isolate, ptr));
912+
return JsValue(v8::External::New(v8Isolate, ptr, v8::kExternalPointerTypeTagDefault));
912913
}
913914

914915
inline JsValue Lock::error(kj::StringPtr message) {

0 commit comments

Comments
 (0)