aboutsummaryrefslogtreecommitdiff
path: root/src/core/file_sys/nca_patch.cpp
diff options
context:
space:
mode:
authorLioncash <mathew1800@gmail.com>2020-09-15 09:10:55 -0400
committerLioncash <mathew1800@gmail.com>2020-09-15 09:10:58 -0400
commit80e57658ac7a9703cf5f20a6ad77c94437e17187 (patch)
treedd29407fa8cb9e61683e3f0250a3d88b55910fdf /src/core/file_sys/nca_patch.cpp
parenta92c6ddd2208e9940bfbc27ae626f1f6e4f757e8 (diff)
nca_patch: Significantly reduce the stack usage size within SearchBucketEntry()
Previously this function was using ~16KB of stack (16528 bytes), which was caused by the function arguments being taken by value rather than by reference. We can make this significantly lighter on the stack by taking them by reference.
Diffstat (limited to 'src/core/file_sys/nca_patch.cpp')
-rw-r--r--src/core/file_sys/nca_patch.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/core/file_sys/nca_patch.cpp b/src/core/file_sys/nca_patch.cpp
index fd7b69e117..5990a2fd5e 100644
--- a/src/core/file_sys/nca_patch.cpp
+++ b/src/core/file_sys/nca_patch.cpp
@@ -14,10 +14,10 @@
namespace FileSys {
namespace {
template <bool Subsection, typename BlockType, typename BucketType>
-std::pair<std::size_t, std::size_t> SearchBucketEntry(u64 offset, BlockType block,
- BucketType buckets) {
+std::pair<std::size_t, std::size_t> SearchBucketEntry(u64 offset, const BlockType& block,
+ const BucketType& buckets) {
if constexpr (Subsection) {
- const auto last_bucket = buckets[block.number_buckets - 1];
+ const auto& last_bucket = buckets[block.number_buckets - 1];
if (offset >= last_bucket.entries[last_bucket.number_entries].address_patch) {
return {block.number_buckets - 1, last_bucket.number_entries};
}
@@ -29,7 +29,7 @@ std::pair<std::size_t, std::size_t> SearchBucketEntry(u64 offset, BlockType bloc
block.base_offsets.begin() + 1, block.base_offsets.begin() + block.number_buckets,
[&offset](u64 base_offset) { return base_offset <= offset; });
- const auto bucket = buckets[bucket_id];
+ const auto& bucket = buckets[bucket_id];
if (bucket.number_entries == 1) {
return {bucket_id, 0};