From 10174c5ab391e1ec80e46bfb8a58c82a5518e5b4 Mon Sep 17 00:00:00 2001 From: Alona Enraght-Moony Date: Wed, 12 Jun 2024 13:15:17 +0100 Subject: [PATCH] Remove needless template parameter from Behaviour::make. (#41) * Remove needless template parameter from Behaviour::make. Signed-off-by: Alona Enraght-Moony * Always use `Be` for behaviour template param (instead of `T`). Signed-off-by: Alona Enraght-Moony --------- Signed-off-by: Alona Enraght-Moony Co-authored-by: Matthew Parkinson --- src/rt/cpp/lambdabehaviour.h | 30 +++++++++++++++--------------- src/rt/sched/behaviour.h | 27 ++++++++++++++------------- 2 files changed, 29 insertions(+), 28 deletions(-) diff --git a/src/rt/cpp/lambdabehaviour.h b/src/rt/cpp/lambdabehaviour.h index c6324e15..761878d3 100644 --- a/src/rt/cpp/lambdabehaviour.h +++ b/src/rt/cpp/lambdabehaviour.h @@ -8,28 +8,28 @@ namespace verona::rt { - template - static void schedule_lambda(Cown* c, T&& f) + template + static void schedule_lambda(Cown* c, Be&& f) { - Behaviour::schedule(c, std::forward(f)); + Behaviour::schedule(c, std::forward(f)); } - template - static void schedule_lambda(size_t count, Cown** cowns, T&& f) + template + static void schedule_lambda(size_t count, Cown** cowns, Be&& f) { - Behaviour::schedule(count, cowns, std::forward(f)); + Behaviour::schedule(count, cowns, std::forward(f)); } - template - static void schedule_lambda(size_t count, Request* requests, T&& f) + template + static void schedule_lambda(size_t count, Request* requests, Be&& f) { - Behaviour::schedule(count, requests, std::forward(f)); + Behaviour::schedule(count, requests, std::forward(f)); } - template - static void schedule_lambda(T&& f) + template + static void schedule_lambda(Be&& f) { - auto w = Closure::make([f = std::forward(f)](Work* w) mutable { + auto w = Closure::make([f = std::forward(f)](Work* w) mutable { f(); return true; }); @@ -38,11 +38,11 @@ namespace verona::rt // TODO super minimal version initially, just to get the tests working. // Should be expanded to cover multiple cowns. - template - inline Notification* make_notification(Cown* cown, T&& f) + template + inline Notification* make_notification(Cown* cown, Be&& f) { Request requests[] = {Request::write(cown)}; - return Notification::make(1, requests, std::forward(f)); + return Notification::make(1, requests, std::forward(f)); } } // namespace verona::rt diff --git a/src/rt/sched/behaviour.h b/src/rt/sched/behaviour.h index 76f5fa68..decbc05d 100644 --- a/src/rt/sched/behaviour.h +++ b/src/rt/sched/behaviour.h @@ -41,12 +41,12 @@ namespace verona::rt return rerun; } - template - static Behaviour* make(size_t count, T&& f) + template + static Behaviour* make(size_t count, Be&& f) { auto behaviour_core = BehaviourCore::make(count, invoke, sizeof(Be)); - new (behaviour_core->get_body()) Be(std::forward(f)); + new (behaviour_core->get_body()) Be(std::forward(f)); // These assertions are basically checking that we won't break any // alignment assumptions on Be. If we add some actual alignment, then @@ -63,8 +63,8 @@ namespace verona::rt schedule(1, &cown, std::forward(f)); } - template - static void schedule(size_t count, Cown** cowns, T&& f) + template + static void schedule(size_t count, Cown** cowns, Be&& f) { // TODO Remove vector allocation here. This is a temporary fix to // as we transition to using Request through the code base. @@ -80,7 +80,7 @@ namespace verona::rt } } - schedule(count, requests, std::forward(f)); + schedule(count, requests, std::forward(f)); alloc.dealloc(requests); } @@ -89,11 +89,11 @@ namespace verona::rt * Prepare a multimessage **/ - template + template static Behaviour* - prepare_to_schedule(size_t count, Request* requests, T&& f) + prepare_to_schedule(size_t count, Request* requests, Be&& f) { - auto body = Behaviour::make(count, std::forward(f)); + auto body = Behaviour::make(count, std::forward(f)); auto* slots = body->get_slots(); for (size_t i = 0; i < count; i++) @@ -106,13 +106,14 @@ namespace verona::rt return body; } - template - static void schedule(size_t count, Request* requests, T&& f) + template + static void schedule(size_t count, Request* requests, Be&& f) { - Logging::cout() << "Schedule behaviour of type: " << typeid(T).name() + Logging::cout() << "Schedule behaviour of type: " << typeid(Be).name() << Logging::endl; - auto* body = prepare_to_schedule(count, requests, std::forward(f)); + auto* body = + prepare_to_schedule(count, requests, std::forward(f)); BehaviourCore* arr[] = {body};