Pass RoutineT::operator() parameters by value
Reactor only supports basic data types as routine arguments, so pass
them by value instead of by rvalue reference. References are implemented
as pointers, so this change avoids unnecessary indirections.
It also makes it easier to look at and debug the disassembly.
Bug: b/143479561
Bug: b/228253151
Change-Id: I31f4e5fafddf34c3e29a59b53b4611776cb62b8e
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/64871
Kokoro-Result: kokoro <noreply+kokoro@google.com>
Tested-by: Nicolas Capens <nicolascapens@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>
diff --git a/src/Reactor/Routine.hpp b/src/Reactor/Routine.hpp
index 24c5198..14fa116 100644
--- a/src/Reactor/Routine.hpp
+++ b/src/Reactor/Routine.hpp
@@ -55,9 +55,9 @@
}
template<typename... Args>
- Return operator()(Args &&...args) const
+ Return operator()(Args... args) const
{
- return function(std::forward<Args>(args)...);
+ return function(args...);
}
const FunctionType getEntry() const