From 1b7434dfc0c84c906132b064e6ea6f1cd76edff6 Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Fri, 19 Jun 2020 16:28:30 +0200 Subject: [PATCH] quic: set up FunctionTemplates more cleanly - Use `kInternalFieldCount`, similar to 0fac393d. - Always inherit from the correct parent template, similar to 8a7201b2. - Always provide a template class name. PR-URL: https://github.com/nodejs/node/pull/33968 Reviewed-By: James M Snell --- src/quic/node_quic_session.cc | 4 ++-- src/quic/node_quic_socket.cc | 16 +++++++++++----- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/quic/node_quic_session.cc b/src/quic/node_quic_session.cc index 66addb3133ab36..5329c992d11c7c 100644 --- a/src/quic/node_quic_session.cc +++ b/src/quic/node_quic_session.cc @@ -3723,7 +3723,7 @@ void QuicSession::Initialize( session->SetClassName(class_name); session->Inherit(AsyncWrap::GetConstructorTemplate(env)); Local sessiont = session->InstanceTemplate(); - sessiont->SetInternalFieldCount(1); + sessiont->SetInternalFieldCount(QuicSession::kInternalFieldCount); sessiont->Set(env->owner_symbol(), Null(env->isolate())); AddMethods(env, session); env->set_quicserversession_instance_template(sessiont); @@ -3736,7 +3736,7 @@ void QuicSession::Initialize( session->SetClassName(class_name); session->Inherit(AsyncWrap::GetConstructorTemplate(env)); Local sessiont = session->InstanceTemplate(); - sessiont->SetInternalFieldCount(1); + sessiont->SetInternalFieldCount(QuicSession::kInternalFieldCount); sessiont->Set(env->owner_symbol(), Null(env->isolate())); AddMethods(env, session); env->SetProtoMethod(session, diff --git a/src/quic/node_quic_socket.cc b/src/quic/node_quic_socket.cc index 28ca2a52336a1c..695c82e217508e 100644 --- a/src/quic/node_quic_socket.cc +++ b/src/quic/node_quic_socket.cc @@ -1121,8 +1121,10 @@ void QuicEndpoint::Initialize( Isolate* isolate = env->isolate(); Local class_name = FIXED_ONE_BYTE_STRING(isolate, "QuicEndpoint"); Local endpoint = env->NewFunctionTemplate(NewQuicEndpoint); + endpoint->Inherit(BaseObject::GetConstructorTemplate(env)); endpoint->SetClassName(class_name); - endpoint->InstanceTemplate()->SetInternalFieldCount(1); + endpoint->InstanceTemplate()->SetInternalFieldCount( + QuicEndpoint::kInternalFieldCount); env->SetProtoMethod(endpoint, "waitForPendingCallbacks", QuicEndpointWaitForPendingCallbacks); @@ -1142,8 +1144,10 @@ void QuicSocket::Initialize( Isolate* isolate = env->isolate(); Local class_name = FIXED_ONE_BYTE_STRING(isolate, "QuicSocket"); Local socket = env->NewFunctionTemplate(NewQuicSocket); + socket->Inherit(AsyncWrap::GetConstructorTemplate(env)); socket->SetClassName(class_name); - socket->InstanceTemplate()->SetInternalFieldCount(1); + socket->InstanceTemplate()->SetInternalFieldCount( + QuicSocket::kInternalFieldCount); socket->InstanceTemplate()->Set(env->owner_symbol(), Null(isolate)); env->SetProtoMethod(socket, "addEndpoint", @@ -1170,9 +1174,11 @@ void QuicSocket::Initialize( target->Set(context, class_name, socket->GetFunction(env->context()).ToLocalChecked()).FromJust(); - // TODO(addaleax): None of these templates actually are constructor templates. - Local sendwrap_template = ObjectTemplate::New(isolate); - sendwrap_template->SetInternalFieldCount(1); + Local sendwrap_ctor = FunctionTemplate::New(isolate); + sendwrap_ctor->Inherit(AsyncWrap::GetConstructorTemplate(env)); + sendwrap_ctor->SetClassName(FIXED_ONE_BYTE_STRING(isolate, "SendWrap")); + Local sendwrap_template = sendwrap_ctor->InstanceTemplate(); + sendwrap_template->SetInternalFieldCount(SendWrap::kInternalFieldCount); env->set_quicsocketsendwrap_instance_template(sendwrap_template); }