summaryrefslogtreecommitdiff
path: root/src/env-inl.h
diff options
context:
space:
mode:
authorAnna Henningsen <anna@addaleax.net>2020-05-17 07:13:16 +0200
committerJames M Snell <jasnell@gmail.com>2020-05-21 17:47:56 -0700
commitb6b82cba27da9ef83bfef67cac9d3593bd72c0e2 (patch)
tree843e46d86bff3bb5e858298bf698b2254908fb04 /src/env-inl.h
parent6f6bf010a7bfde32f4015758ae2f2af8b45cb612 (diff)
downloadnode-new-b6b82cba27da9ef83bfef67cac9d3593bd72c0e2.tar.gz
src: use enum for refed flag on native immediates
Refs: https://github.com/nodejs/node/pull/33320#discussion_r423141443 PR-URL: https://github.com/nodejs/node/pull/33444 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Zeyu Yang <himself65@outlook.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: David Carlier <devnexen@gmail.com> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Diffstat (limited to 'src/env-inl.h')
-rw-r--r--src/env-inl.h32
1 files changed, 12 insertions, 20 deletions
diff --git a/src/env-inl.h b/src/env-inl.h
index 74e36af4fe..3bc59acfc8 100644
--- a/src/env-inl.h
+++ b/src/env-inl.h
@@ -707,29 +707,21 @@ inline void IsolateData::set_options(
}
template <typename Fn>
-void Environment::CreateImmediate(Fn&& cb, bool ref) {
- auto callback = native_immediates_.CreateCallback(std::move(cb), ref);
+void Environment::SetImmediate(Fn&& cb, CallbackFlags::Flags flags) {
+ auto callback = native_immediates_.CreateCallback(std::move(cb), flags);
native_immediates_.Push(std::move(callback));
-}
-
-template <typename Fn>
-void Environment::SetImmediate(Fn&& cb) {
- CreateImmediate(std::move(cb), true);
- if (immediate_info()->ref_count() == 0)
- ToggleImmediateRef(true);
- immediate_info()->ref_count_inc(1);
-}
-
-template <typename Fn>
-void Environment::SetUnrefImmediate(Fn&& cb) {
- CreateImmediate(std::move(cb), false);
+ if (flags & CallbackFlags::kRefed) {
+ if (immediate_info()->ref_count() == 0)
+ ToggleImmediateRef(true);
+ immediate_info()->ref_count_inc(1);
+ }
}
template <typename Fn>
-void Environment::SetImmediateThreadsafe(Fn&& cb, bool refed) {
- auto callback =
- native_immediates_threadsafe_.CreateCallback(std::move(cb), refed);
+void Environment::SetImmediateThreadsafe(Fn&& cb, CallbackFlags::Flags flags) {
+ auto callback = native_immediates_threadsafe_.CreateCallback(
+ std::move(cb), flags);
{
Mutex::ScopedLock lock(native_immediates_threadsafe_mutex_);
native_immediates_threadsafe_.Push(std::move(callback));
@@ -740,8 +732,8 @@ void Environment::SetImmediateThreadsafe(Fn&& cb, bool refed) {
template <typename Fn>
void Environment::RequestInterrupt(Fn&& cb) {
- auto callback =
- native_immediates_interrupts_.CreateCallback(std::move(cb), false);
+ auto callback = native_immediates_interrupts_.CreateCallback(
+ std::move(cb), CallbackFlags::kRefed);
{
Mutex::ScopedLock lock(native_immediates_threadsafe_mutex_);
native_immediates_interrupts_.Push(std::move(callback));