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ý2025-09-23 15:23:58 +0200
committerMartin Hořeňovský2025-09-27 13:24:46 +0200
commit756ae05d307168eaa27bd904dbd8e591a6406889 (patch)
treee64236a5fde23db97284d9894348af6292676db2 /src/catch2/internal
parenta2e41916f2cc0adbd27fc3d9cb89e9615fea1ad8 (diff)
downloadcatch3-756ae05d307168eaa27bd904dbd8e591a6406889.tar.gz
Inline the `getResultCapture` helper into header.
We still keep the error check in the function, but hide it in an outlined function inside a .cpp file, to promote inlining of the retrieval part. In the future, we should explore two things 1) Skipping over the context retrieval here, allowing direct access. I currently do not see a way to do this while keeping the "greppability" of mutable vs immutable accesses that is there now, but it would help a lot when inlining is not enabled. 2) Removing the error check, to make the function trivially inlinable, and without branches. **runtime difference** | --------- | Debug | Release | |:----------|------:|--------:| | Slow path | 0.98 | 1.07 | | Fast path | 1.04 | 1.08 | We lost bit of performance on the assertion slow path in debug mode, but together with the previous commit, it comes out at net zero. For other combinations, we see 5-10% perf improvement across the two commits.
Diffstat (limited to 'src/catch2/internal')
-rw-r--r--src/catch2/internal/catch_context.hpp1
-rw-r--r--src/catch2/internal/catch_run_context.cpp7
2 files changed, 0 insertions, 8 deletions
diff --git a/src/catch2/internal/catch_context.hpp b/src/catch2/internal/catch_context.hpp
index e35de4b4..0b89632c 100644
--- a/src/catch2/internal/catch_context.hpp
+++ b/src/catch2/internal/catch_context.hpp
@@ -32,7 +32,6 @@ namespace Catch {
m_resultCapture = resultCapture;
}
constexpr void setConfig( IConfig const* config ) { m_config = config; }
-
};
Context& getCurrentMutableContext();
diff --git a/src/catch2/internal/catch_run_context.cpp b/src/catch2/internal/catch_run_context.cpp
index fc521f8b..0029bf56 100644
--- a/src/catch2/internal/catch_run_context.cpp
+++ b/src/catch2/internal/catch_run_context.cpp
@@ -809,13 +809,6 @@ namespace Catch {
}
}
- IResultCapture& getResultCapture() {
- if (auto* capture = getCurrentContext().getResultCapture())
- return *capture;
- else
- CATCH_INTERNAL_ERROR("No result capture instance");
- }
-
void IResultCapture::pushScopedMessage( MessageInfo&& message ) {
Detail::g_messages.push_back( CATCH_MOVE( message ) );
}