Skip to content

Commit 4896a0d

Browse files
authored
Add tag parameters to V8 API calls (#230)
The API functions got tag parameters recently and the versions without tag parameters are getting deprecated.
1 parent 5a511eb commit 4896a0d

16 files changed

+48
-49
lines changed

src/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,9 +126,9 @@ Typical ways of working with internal fields are:
126126
* `obj->GetInternalField(i)` to get a JavaScript value from an internal field.
127127
* `obj->SetInternalField(i, v)` to store a JavaScript value in an
128128
internal field.
129-
* `obj->GetAlignedPointerFromInternalField(i)` to get a `void*` pointer from an
129+
* `obj->GetAlignedPointerFromInternalField(i, 0)` to get a `void*` pointer from an
130130
internal field.
131-
* `obj->SetAlignedPointerInInternalField(i, p)` to store a `void*` pointer in an
131+
* `obj->SetAlignedPointerInInternalField(i, p, 0)` to store a `void*` pointer in an
132132
internal field.
133133

134134
[`Context`][]s provide the same feature under the name “embedder data”.

src/base_object-inl.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -76,29 +76,29 @@ bool BaseObject::IsBaseObject(IsolateData* isolate_data,
7676
}
7777

7878
uint16_t* ptr = static_cast<uint16_t*>(
79-
obj->GetAlignedPointerFromInternalField(BaseObject::kEmbedderType));
79+
obj->GetAlignedPointerFromInternalField(BaseObject::kEmbedderType, 0));
8080
return ptr == isolate_data->embedder_id_for_non_cppgc();
8181
}
8282

8383
void BaseObject::TagBaseObject(IsolateData* isolate_data,
8484
v8::Local<v8::Object> object) {
8585
DCHECK_GE(object->InternalFieldCount(), BaseObject::kInternalFieldCount);
8686
object->SetAlignedPointerInInternalField(
87-
BaseObject::kEmbedderType, isolate_data->embedder_id_for_non_cppgc());
87+
BaseObject::kEmbedderType, isolate_data->embedder_id_for_non_cppgc(), 0);
8888
}
8989

9090
void BaseObject::SetInternalFields(IsolateData* isolate_data,
9191
v8::Local<v8::Object> object,
9292
void* slot) {
9393
TagBaseObject(isolate_data, object);
94-
object->SetAlignedPointerInInternalField(BaseObject::kSlot, slot);
94+
object->SetAlignedPointerInInternalField(BaseObject::kSlot, slot, 0);
9595
}
9696

9797
BaseObject* BaseObject::FromJSObject(v8::Local<v8::Value> value) {
9898
v8::Local<v8::Object> obj = value.As<v8::Object>();
9999
DCHECK_GE(obj->InternalFieldCount(), BaseObject::kInternalFieldCount);
100100
return static_cast<BaseObject*>(
101-
obj->GetAlignedPointerFromInternalField(BaseObject::kSlot));
101+
obj->GetAlignedPointerFromInternalField(BaseObject::kSlot, 0));
102102
}
103103

104104
template <typename T>

src/base_object.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ BaseObject::~BaseObject() {
4545

4646
{
4747
HandleScope handle_scope(realm()->isolate());
48-
object()->SetAlignedPointerInInternalField(BaseObject::kSlot, nullptr);
48+
object()->SetAlignedPointerInInternalField(BaseObject::kSlot, nullptr, 0);
4949
}
5050
}
5151

src/cppgc_helpers-inl.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ void CppgcMixin::Wrap(T* ptr, Realm* realm, v8::Local<v8::Object> obj) {
1919
v8::Object::Wrap<v8::CppHeapPointerTag::kDefaultTag>(isolate, obj, wrappable);
2020
// Keep the layout consistent with BaseObjects.
2121
obj->SetAlignedPointerInInternalField(
22-
kEmbedderType, realm->isolate_data()->embedder_id_for_cppgc());
23-
obj->SetAlignedPointerInInternalField(kSlot, ptr);
22+
kEmbedderType, realm->isolate_data()->embedder_id_for_cppgc(), 0);
23+
obj->SetAlignedPointerInInternalField(kSlot, ptr, 0);
2424
realm->TrackCppgcWrapper(ptr);
2525
}
2626

@@ -41,7 +41,7 @@ T* CppgcMixin::Unwrap(v8::Local<v8::Object> obj) {
4141
if (obj->InternalFieldCount() != T::kInternalFieldCount) {
4242
return nullptr;
4343
}
44-
T* ptr = static_cast<T*>(obj->GetAlignedPointerFromInternalField(T::kSlot));
44+
T* ptr = static_cast<T*>(obj->GetAlignedPointerFromInternalField(T::kSlot, 0));
4545
return ptr;
4646
}
4747

src/env-inl.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ inline Environment* Environment::GetCurrent(v8::Local<v8::Context> context) {
198198
}
199199
return static_cast<Environment*>(
200200
context->GetAlignedPointerFromEmbedderData(
201-
ContextEmbedderIndex::kEnvironment));
201+
ContextEmbedderIndex::kEnvironment, 0));
202202
}
203203

204204
inline Environment* Environment::GetCurrent(

src/env.cc

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -674,12 +674,12 @@ void Environment::AssignToContext(Local<v8::Context> context,
674674
Realm* realm,
675675
const ContextInfo& info) {
676676
context->SetAlignedPointerInEmbedderData(ContextEmbedderIndex::kEnvironment,
677-
this);
678-
context->SetAlignedPointerInEmbedderData(ContextEmbedderIndex::kRealm, realm);
677+
this, 0);
678+
context->SetAlignedPointerInEmbedderData(ContextEmbedderIndex::kRealm, realm, 0);
679679

680680
// ContextifyContexts will update this to a pointer to the native object.
681681
context->SetAlignedPointerInEmbedderData(
682-
ContextEmbedderIndex::kContextifyContext, nullptr);
682+
ContextEmbedderIndex::kContextifyContext, nullptr, 0);
683683

684684
// This must not be done before other context fields are initialized.
685685
ContextEmbedderTag::TagNodeContext(context);
@@ -695,11 +695,11 @@ void Environment::AssignToContext(Local<v8::Context> context,
695695
void Environment::UnassignFromContext(Local<v8::Context> context) {
696696
if (!context.IsEmpty()) {
697697
context->SetAlignedPointerInEmbedderData(ContextEmbedderIndex::kEnvironment,
698-
nullptr);
698+
nullptr, 0);
699699
context->SetAlignedPointerInEmbedderData(ContextEmbedderIndex::kRealm,
700-
nullptr);
700+
nullptr, 0);
701701
context->SetAlignedPointerInEmbedderData(
702-
ContextEmbedderIndex::kContextifyContext, nullptr);
702+
ContextEmbedderIndex::kContextifyContext, nullptr, 0);
703703
}
704704
UntrackContext(context);
705705
}

src/histogram.cc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ HistogramBase::HistogramBase(
136136
MakeWeak();
137137
wrap->SetAlignedPointerInInternalField(
138138
HistogramImpl::InternalFields::kImplField,
139-
static_cast<HistogramImpl*>(this));
139+
static_cast<HistogramImpl*>(this), 0);
140140
}
141141

142142
HistogramBase::HistogramBase(
@@ -148,7 +148,7 @@ HistogramBase::HistogramBase(
148148
MakeWeak();
149149
wrap->SetAlignedPointerInInternalField(
150150
HistogramImpl::InternalFields::kImplField,
151-
static_cast<HistogramImpl*>(this));
151+
static_cast<HistogramImpl*>(this), 0);
152152
}
153153

154154
void HistogramBase::MemoryInfo(MemoryTracker* tracker) const {
@@ -362,7 +362,7 @@ IntervalHistogram::IntervalHistogram(
362362
MakeWeak();
363363
wrap->SetAlignedPointerInInternalField(
364364
HistogramImpl::InternalFields::kImplField,
365-
static_cast<HistogramImpl*>(this));
365+
static_cast<HistogramImpl*>(this), 0);
366366
uv_timer_init(env->event_loop(), &timer_);
367367
}
368368

@@ -601,7 +601,7 @@ HistogramImpl* HistogramImpl::FromJSObject(Local<Value> value) {
601601
auto obj = value.As<Object>();
602602
DCHECK_GE(obj->InternalFieldCount(), HistogramImpl::kInternalFieldCount);
603603
return static_cast<HistogramImpl*>(
604-
obj->GetAlignedPointerFromInternalField(HistogramImpl::kImplField));
604+
obj->GetAlignedPointerFromInternalField(HistogramImpl::kImplField, 0));
605605
}
606606

607607
std::unique_ptr<worker::TransferData>

src/js_udp_wrap.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ JSUDPWrap::JSUDPWrap(Environment* env, Local<Object> obj)
5656
MakeWeak();
5757

5858
obj->SetAlignedPointerInInternalField(
59-
kUDPWrapBaseField, static_cast<UDPWrapBase*>(this));
59+
kUDPWrapBaseField, static_cast<UDPWrapBase*>(this), 0);
6060
}
6161

6262
int JSUDPWrap::RecvStart() {

src/node_context_data.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ class ContextEmbedderTag {
135135
// context.
136136
context->SetAlignedPointerInEmbedderData(
137137
ContextEmbedderIndex::kContextTag,
138-
ContextEmbedderTag::kNodeContextTagPtr);
138+
ContextEmbedderTag::kNodeContextTagPtr, 0);
139139
}
140140

141141
static inline bool IsNodeContext(v8::Local<v8::Context> context) {
@@ -147,7 +147,7 @@ class ContextEmbedderTag {
147147
return false;
148148
}
149149
if (context->GetAlignedPointerFromEmbedderData(
150-
ContextEmbedderIndex::kContextTag) !=
150+
ContextEmbedderIndex::kContextTag, 0) !=
151151
ContextEmbedderTag::kNodeContextTagPtr) [[unlikely]] {
152152
return false;
153153
}

src/node_contextify.cc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -163,9 +163,9 @@ ContextifyContext::ContextifyContext(Environment* env,
163163
// This should only be done after the initial initializations of the context
164164
// global object is finished.
165165
DCHECK_NULL(v8_context->GetAlignedPointerFromEmbedderData(
166-
ContextEmbedderIndex::kContextifyContext));
166+
ContextEmbedderIndex::kContextifyContext, 0));
167167
v8_context->SetAlignedPointerInEmbedderData(
168-
ContextEmbedderIndex::kContextifyContext, this);
168+
ContextEmbedderIndex::kContextifyContext, this, 0);
169169
}
170170

171171
void ContextifyContext::InitializeGlobalTemplates(IsolateData* isolate_data) {
@@ -472,7 +472,7 @@ ContextifyContext* ContextifyContext::Get(Local<Object> object) {
472472
}
473473
return static_cast<ContextifyContext*>(
474474
context->GetAlignedPointerFromEmbedderData(
475-
ContextEmbedderIndex::kContextifyContext));
475+
ContextEmbedderIndex::kContextifyContext, 0));
476476
}
477477

478478
bool ContextifyContext::IsStillInitializing(const ContextifyContext* ctx) {

0 commit comments

Comments
 (0)