summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAnna Henningsen <anna@addaleax.net>2018-03-07 13:48:52 +0100
committerAnna Henningsen <anna@addaleax.net>2018-03-11 18:20:38 +0100
commitd3f174faab55662226ced53bef6bb2040352a825 (patch)
tree06724215b97d8efa9ce0538a5113b1bdb2766827 /src
parentddcc00bc1e8cc5815c942e1c4713ce92e7a27d40 (diff)
downloadandroid-node-v8-d3f174faab55662226ced53bef6bb2040352a825.tar.gz
android-node-v8-d3f174faab55662226ced53bef6bb2040352a825.tar.bz2
android-node-v8-d3f174faab55662226ced53bef6bb2040352a825.zip
src: add convenience ctor for async trigger id scope
PR-URL: https://github.com/nodejs/node/pull/19204 Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com>
Diffstat (limited to 'src')
-rw-r--r--src/async_wrap-inl.h7
-rw-r--r--src/async_wrap.cc3
-rw-r--r--src/env-inl.h3
-rw-r--r--src/env.h1
-rw-r--r--src/pipe_wrap.cc3
-rw-r--r--src/stream_base-inl.h9
-rw-r--r--src/tcp_wrap.cc9
-rw-r--r--src/udp_wrap.cc6
8 files changed, 21 insertions, 20 deletions
diff --git a/src/async_wrap-inl.h b/src/async_wrap-inl.h
index cc6377d82a..21b1f9cee9 100644
--- a/src/async_wrap-inl.h
+++ b/src/async_wrap-inl.h
@@ -64,6 +64,13 @@ inline v8::MaybeLocal<v8::Value> AsyncWrap::MakeCallback(
return MakeCallback(cb_v.As<v8::Function>(), argc, argv);
}
+
+// Defined here to avoid a circular dependency with env-inl.h.
+inline Environment::AsyncHooks::DefaultTriggerAsyncIdScope
+ ::DefaultTriggerAsyncIdScope(AsyncWrap* async_wrap)
+ : DefaultTriggerAsyncIdScope(async_wrap->env(),
+ async_wrap->get_async_id()) {}
+
} // namespace node
#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
diff --git a/src/async_wrap.cc b/src/async_wrap.cc
index 239e607b05..b6776364a5 100644
--- a/src/async_wrap.cc
+++ b/src/async_wrap.cc
@@ -312,8 +312,7 @@ static void PromiseHook(PromiseHookType type, Local<Promise> promise,
parent_wrap = PromiseWrap::New(env, parent_promise, nullptr, true);
}
- AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(
- env, parent_wrap->get_async_id());
+ AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(parent_wrap);
wrap = PromiseWrap::New(env, promise, parent_wrap, silent);
} else {
wrap = PromiseWrap::New(env, promise, nullptr, silent);
diff --git a/src/env-inl.h b/src/env-inl.h
index 8883903cb1..31f2af4024 100644
--- a/src/env-inl.h
+++ b/src/env-inl.h
@@ -179,6 +179,9 @@ inline void Environment::AsyncHooks::clear_async_id_stack() {
fields_[kStackLength] = 0;
}
+// The DefaultTriggerAsyncIdScope(AsyncWrap*) constructor is defined in
+// async_wrap-inl.h to avoid a circular dependency.
+
inline Environment::AsyncHooks::DefaultTriggerAsyncIdScope
::DefaultTriggerAsyncIdScope(Environment* env,
double default_trigger_async_id)
diff --git a/src/env.h b/src/env.h
index 2fd3254ed7..e6060b9e6f 100644
--- a/src/env.h
+++ b/src/env.h
@@ -431,6 +431,7 @@ class Environment {
DefaultTriggerAsyncIdScope() = delete;
explicit DefaultTriggerAsyncIdScope(Environment* env,
double init_trigger_async_id);
+ explicit DefaultTriggerAsyncIdScope(AsyncWrap* async_wrap);
~DefaultTriggerAsyncIdScope();
private:
diff --git a/src/pipe_wrap.cc b/src/pipe_wrap.cc
index 016ce480b6..14ac671b92 100644
--- a/src/pipe_wrap.cc
+++ b/src/pipe_wrap.cc
@@ -54,8 +54,7 @@ Local<Object> PipeWrap::Instantiate(Environment* env,
AsyncWrap* parent,
PipeWrap::SocketType type) {
EscapableHandleScope handle_scope(env->isolate());
- AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(env,
- parent->get_async_id());
+ AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(parent);
CHECK_EQ(false, env->pipe_constructor_template().IsEmpty());
Local<Function> constructor = env->pipe_constructor_template()->GetFunction();
CHECK_EQ(false, constructor.IsEmpty());
diff --git a/src/stream_base-inl.h b/src/stream_base-inl.h
index 81adf7a866..1534dcd1d5 100644
--- a/src/stream_base-inl.h
+++ b/src/stream_base-inl.h
@@ -164,8 +164,7 @@ inline int StreamBase::Shutdown(v8::Local<v8::Object> req_wrap_obj) {
->NewInstance(env->context()).ToLocalChecked();
}
- AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(
- env, GetAsyncWrap()->get_async_id());
+ AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(GetAsyncWrap());
ShutdownWrap* req_wrap = CreateShutdownWrap(req_wrap_obj);
int err = DoShutdown(req_wrap);
@@ -202,8 +201,7 @@ inline StreamWriteResult StreamBase::Write(
->NewInstance(env->context()).ToLocalChecked();
}
- AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(
- env, GetAsyncWrap()->get_async_id());
+ AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(GetAsyncWrap());
WriteWrap* req_wrap = CreateWriteWrap(req_wrap_obj);
err = DoWrite(req_wrap, bufs, count, send_handle);
@@ -383,8 +381,7 @@ void StreamBase::JSMethod(const FunctionCallbackInfo<Value>& args) {
if (!wrap->IsAlive())
return args.GetReturnValue().Set(UV_EINVAL);
- AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(
- handle->env(), handle->get_async_id());
+ AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(handle);
args.GetReturnValue().Set((wrap->*Method)(args));
}
diff --git a/src/tcp_wrap.cc b/src/tcp_wrap.cc
index 61b08217b8..cd6ed3cef0 100644
--- a/src/tcp_wrap.cc
+++ b/src/tcp_wrap.cc
@@ -57,8 +57,7 @@ Local<Object> TCPWrap::Instantiate(Environment* env,
AsyncWrap* parent,
TCPWrap::SocketType type) {
EscapableHandleScope handle_scope(env->isolate());
- AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(
- env, parent->get_async_id());
+ AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(parent);
CHECK_EQ(env->tcp_constructor_template().IsEmpty(), false);
Local<Function> constructor = env->tcp_constructor_template()->GetFunction();
CHECK_EQ(constructor.IsEmpty(), false);
@@ -289,8 +288,7 @@ void TCPWrap::Connect(const FunctionCallbackInfo<Value>& args) {
int err = uv_ip4_addr(*ip_address, port, &addr);
if (err == 0) {
- AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(
- env, wrap->get_async_id());
+ AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(wrap);
ConnectWrap* req_wrap =
new ConnectWrap(env, req_wrap_obj, AsyncWrap::PROVIDER_TCPCONNECTWRAP);
err = uv_tcp_connect(req_wrap->req(),
@@ -326,8 +324,7 @@ void TCPWrap::Connect6(const FunctionCallbackInfo<Value>& args) {
int err = uv_ip6_addr(*ip_address, port, &addr);
if (err == 0) {
- AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(
- env, wrap->get_async_id());
+ AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(wrap);
ConnectWrap* req_wrap =
new ConnectWrap(env, req_wrap_obj, AsyncWrap::PROVIDER_TCPCONNECTWRAP);
err = uv_tcp_connect(req_wrap->req(),
diff --git a/src/udp_wrap.cc b/src/udp_wrap.cc
index 27be93abd0..e7d97dc484 100644
--- a/src/udp_wrap.cc
+++ b/src/udp_wrap.cc
@@ -359,8 +359,7 @@ void UDPWrap::DoSend(const FunctionCallbackInfo<Value>& args, int family) {
SendWrap* req_wrap;
{
- AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(
- env, wrap->get_async_id());
+ AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(wrap);
req_wrap = new SendWrap(env, req_wrap_obj, have_callback);
}
size_t msg_size = 0;
@@ -511,8 +510,7 @@ Local<Object> UDPWrap::Instantiate(Environment* env,
AsyncWrap* parent,
UDPWrap::SocketType type) {
EscapableHandleScope scope(env->isolate());
- AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(
- env, parent->get_async_id());
+ AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(parent);
// If this assert fires then Initialize hasn't been called yet.
CHECK_EQ(env->udp_constructor_function().IsEmpty(), false);