Read-only mirrors. Development, issues and pull requests are on GitHub.

summaryrefslogtreecommitdiffhomepage
path: root/src/catch2/internal
diff options
context:
space:
mode:
authorMartin Hořeňovský2023-02-19 23:53:34 +0100
committerMartin Hořeňovský2023-02-20 15:17:35 +0100
commit4f7c8cb28a0fdb4cc8b93f139b1b1e5d3ff0a328 (patch)
treebb903b29161d70389a442157c43403031a21f3d3 /src/catch2/internal
parente1dbad4c9e9e5517c188cbd8af04cb6369851207 (diff)
downloadcatch3-4f7c8cb28a0fdb4cc8b93f139b1b1e5d3ff0a328.tar.gz
Avoid copying NameAndLocationRef when passed as argument
`NameAndLocationRef` is pretty large type, so even in release build, it is unlikely to be passed in registers. In addition to the fact that some platforms currently do not allow passing even small types in register (Windows ABI!!), it is better to pass it as a ref, effectively passing around a pointer.
Diffstat (limited to 'src/catch2/internal')
-rw-r--r--src/catch2/internal/catch_run_context.cpp2
-rw-r--r--src/catch2/internal/catch_test_case_tracker.cpp4
-rw-r--r--src/catch2/internal/catch_test_case_tracker.hpp8
3 files changed, 7 insertions, 7 deletions
diff --git a/src/catch2/internal/catch_run_context.cpp b/src/catch2/internal/catch_run_context.cpp
index 92d6d988..08086b28 100644
--- a/src/catch2/internal/catch_run_context.cpp
+++ b/src/catch2/internal/catch_run_context.cpp
@@ -34,7 +34,7 @@ namespace Catch {
{}
~GeneratorTracker() override;
- static GeneratorTracker* acquire( TrackerContext& ctx, TestCaseTracking::NameAndLocationRef nameAndLocation ) {
+ static GeneratorTracker* acquire( TrackerContext& ctx, TestCaseTracking::NameAndLocationRef const& nameAndLocation ) {
GeneratorTracker* tracker;
ITracker& currentTracker = ctx.currentTracker();
diff --git a/src/catch2/internal/catch_test_case_tracker.cpp b/src/catch2/internal/catch_test_case_tracker.cpp
index a9d6614f..c48932b1 100644
--- a/src/catch2/internal/catch_test_case_tracker.cpp
+++ b/src/catch2/internal/catch_test_case_tracker.cpp
@@ -38,7 +38,7 @@ namespace TestCaseTracking {
m_children.push_back( CATCH_MOVE(child) );
}
- ITracker* ITracker::findChild( NameAndLocationRef nameAndLocation ) {
+ ITracker* ITracker::findChild( NameAndLocationRef const& nameAndLocation ) {
auto it = std::find_if(
m_children.begin(),
m_children.end(),
@@ -177,7 +177,7 @@ namespace TestCaseTracking {
bool SectionTracker::isSectionTracker() const { return true; }
- SectionTracker& SectionTracker::acquire( TrackerContext& ctx, NameAndLocationRef nameAndLocation ) {
+ SectionTracker& SectionTracker::acquire( TrackerContext& ctx, NameAndLocationRef const& nameAndLocation ) {
SectionTracker* tracker;
ITracker& currentTracker = ctx.currentTracker();
diff --git a/src/catch2/internal/catch_test_case_tracker.hpp b/src/catch2/internal/catch_test_case_tracker.hpp
index 8252558a..506e42de 100644
--- a/src/catch2/internal/catch_test_case_tracker.hpp
+++ b/src/catch2/internal/catch_test_case_tracker.hpp
@@ -49,11 +49,11 @@ namespace TestCaseTracking {
name( name_ ), location( location_ ) {}
friend bool operator==( NameAndLocation const& lhs,
- NameAndLocationRef rhs ) {
+ NameAndLocationRef const& rhs ) {
return StringRef( lhs.name ) == rhs.name &&
lhs.location == rhs.location;
}
- friend bool operator==( NameAndLocationRef lhs,
+ friend bool operator==( NameAndLocationRef const& lhs,
NameAndLocation const& rhs ) {
return rhs == lhs;
}
@@ -125,7 +125,7 @@ namespace TestCaseTracking {
*
* Returns nullptr if not found.
*/
- ITracker* findChild( NameAndLocationRef nameAndLocation );
+ ITracker* findChild( NameAndLocationRef const& nameAndLocation );
//! Have any children been added?
bool hasChildren() const {
return !m_children.empty();
@@ -212,7 +212,7 @@ namespace TestCaseTracking {
bool isComplete() const override;
- static SectionTracker& acquire( TrackerContext& ctx, NameAndLocationRef nameAndLocation );
+ static SectionTracker& acquire( TrackerContext& ctx, NameAndLocationRef const& nameAndLocation );
void tryOpen();