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:
authorDarshan Sen <darshan.sen@postman.com>2021-11-13 00:47:42 +0300
committerGitHub <noreply@github.com>2021-11-13 00:47:42 +0300
commit2d368da19f90830e993250050ccd8c6f76bd9cd7 (patch)
tree74c4f1eae2ac5f60b17da1e634cda5819481243a /src/timer_wrap.cc
parent2037ee85a28c9b54e8a84137e251118ee071aa6f (diff)
src: prevent extra copies of `TimerWrap::TimerCb`
I noticed that we were taking `TimerCb` as a `const&` and then copying that into the member. This is completely fine when the constructor is called with an lvalue. However, when called with an rvalue, we can allow the `std::function` to be moved into the member instead of falling back to a copy, so I changed the constructors to take in universal references. Also, `std::function` constructors can take in multiple arguments, so I further modified the constructors to use variadic templates. Signed-off-by: Darshan Sen <darshan.sen@postman.com> PR-URL: https://github.com/nodejs/node/pull/40665 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Minwoo Jung <nodecorelab@gmail.com> Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Diffstat (limited to 'src/timer_wrap.cc')
-rw-r--r--src/timer_wrap.cc18
1 files changed, 3 insertions, 15 deletions
diff --git a/src/timer_wrap.cc b/src/timer_wrap.cc
index 6660b8c9588..2b4457df818 100644
--- a/src/timer_wrap.cc
+++ b/src/timer_wrap.cc
@@ -1,17 +1,12 @@
+#include "timer_wrap.h" // NOLINT(build/include_inline)
+#include "timer_wrap-inl.h"
+
#include "env-inl.h"
#include "memory_tracker-inl.h"
-#include "timer_wrap.h"
#include "uv.h"
namespace node {
-TimerWrap::TimerWrap(Environment* env, const TimerCb& fn)
- : env_(env),
- fn_(fn) {
- uv_timer_init(env->event_loop(), &timer_);
- timer_.data = this;
-}
-
void TimerWrap::Stop() {
if (timer_.data == nullptr) return;
uv_timer_stop(&timer_);
@@ -48,13 +43,6 @@ void TimerWrap::OnTimeout(uv_timer_t* timer) {
t->fn_();
}
-TimerWrapHandle::TimerWrapHandle(
- Environment* env,
- const TimerWrap::TimerCb& fn) {
- timer_ = new TimerWrap(env, fn);
- env->AddCleanupHook(CleanupHook, this);
-}
-
void TimerWrapHandle::Stop() {
if (timer_ != nullptr)
return timer_->Stop();