diff options
author | Anna Henningsen <anna@addaleax.net> | 2020-05-17 07:13:16 +0200 |
---|---|---|
committer | James M Snell <jasnell@gmail.com> | 2020-05-21 17:47:56 -0700 |
commit | b6b82cba27da9ef83bfef67cac9d3593bd72c0e2 (patch) | |
tree | 843e46d86bff3bb5e858298bf698b2254908fb04 /src/env-inl.h | |
parent | 6f6bf010a7bfde32f4015758ae2f2af8b45cb612 (diff) | |
download | node-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.h | 32 |
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)); |