Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nodejs/node.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames M Snell <jasnell@gmail.com>2020-02-26 01:37:33 +0300
committerJames M Snell <jasnell@gmail.com>2020-03-02 21:58:36 +0300
commit0fac393d263fc7e2f4f054c9d4aab0c1c3cf00c8 (patch)
treef11f3380bc282709feed38b957e38ad3adf2a4a5 /src/stream_base-inl.h
parent68e36ade3de2205c583f2cc6a2d2ec192b75cc95 (diff)
src: improve handling of internal field counting
Change suggested by bnoordhuis. Improve handing of internal field counting by using enums. Helps protect against future possible breakage if field indexes are ever changed or added to. Signed-off-by: James M Snell <jasnell@gmail.com> PR-URL: https://github.com/nodejs/node/pull/31960 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Diffstat (limited to 'src/stream_base-inl.h')
-rw-r--r--src/stream_base-inl.h22
1 files changed, 14 insertions, 8 deletions
diff --git a/src/stream_base-inl.h b/src/stream_base-inl.h
index f89eb3a5287..27a9a01c7c2 100644
--- a/src/stream_base-inl.h
+++ b/src/stream_base-inl.h
@@ -23,18 +23,22 @@ using v8::String;
using v8::Value;
inline void StreamReq::AttachToObject(v8::Local<v8::Object> req_wrap_obj) {
- CHECK_EQ(req_wrap_obj->GetAlignedPointerFromInternalField(kStreamReqField),
+ CHECK_EQ(req_wrap_obj->GetAlignedPointerFromInternalField(
+ StreamReq::kStreamReqField),
nullptr);
- req_wrap_obj->SetAlignedPointerInInternalField(kStreamReqField, this);
+ req_wrap_obj->SetAlignedPointerInInternalField(
+ StreamReq::kStreamReqField, this);
}
inline StreamReq* StreamReq::FromObject(v8::Local<v8::Object> req_wrap_obj) {
return static_cast<StreamReq*>(
- req_wrap_obj->GetAlignedPointerFromInternalField(kStreamReqField));
+ req_wrap_obj->GetAlignedPointerFromInternalField(
+ StreamReq::kStreamReqField));
}
inline void StreamReq::Dispose() {
- object()->SetAlignedPointerInInternalField(kStreamReqField, nullptr);
+ object()->SetAlignedPointerInInternalField(
+ StreamReq::kStreamReqField, nullptr);
delete this;
}
@@ -261,15 +265,17 @@ inline WriteWrap* StreamBase::CreateWriteWrap(
}
inline void StreamBase::AttachToObject(v8::Local<v8::Object> obj) {
- obj->SetAlignedPointerInInternalField(kStreamBaseField, this);
+ obj->SetAlignedPointerInInternalField(
+ StreamBase::kStreamBaseField, this);
}
inline StreamBase* StreamBase::FromObject(v8::Local<v8::Object> obj) {
- if (obj->GetAlignedPointerFromInternalField(0) == nullptr)
+ if (obj->GetAlignedPointerFromInternalField(StreamBase::kSlot) == nullptr)
return nullptr;
return static_cast<StreamBase*>(
- obj->GetAlignedPointerFromInternalField(kStreamBaseField));
+ obj->GetAlignedPointerFromInternalField(
+ StreamBase::kStreamBaseField));
}
@@ -304,7 +310,7 @@ inline void StreamReq::Done(int status, const char* error_str) {
inline void StreamReq::ResetObject(v8::Local<v8::Object> obj) {
DCHECK_GT(obj->InternalFieldCount(), StreamReq::kStreamReqField);
- obj->SetAlignedPointerInInternalField(0, nullptr); // BaseObject field.
+ obj->SetAlignedPointerInInternalField(StreamReq::kSlot, nullptr);
obj->SetAlignedPointerInInternalField(StreamReq::kStreamReqField, nullptr);
}