summaryrefslogtreecommitdiff
path: root/view/sharedcache/core/SharedCacheView.cpp
diff options
context:
space:
mode:
authorMason Reed <mason@vector35.com>2025-04-06 20:00:00 -0400
committerMason Reed <mason@vector35.com>2025-04-06 20:00:37 -0400
commitc22d54c5d95f4d23629484579414387b0c7503ee (patch)
tree933a58c8ed3518f507f5bd4d496364411273f5b9 /view/sharedcache/core/SharedCacheView.cpp
parent4f22a944d77f784b53ee3a37d9f1966ede1c98a4 (diff)
[SharedCache] Replace write log with callback registration for reapplying slide info
This improves performance by ~10x with the only real issue being a copy of the cache entry existing for each weak ref. Also fixes - Some old TODO's that are no longer relevant - Some function signatures not being const - FileAccessorCache not evicting enough accessors to fit under an adjusted cache size - Added a warning if we are over the global cache size in view initialization - Logger name not having a `.` in `SlideInfoProcessor::SlideInfoProcessor` - Re-added the accessor dirty check before applying slide info to fix https://github.com/Vector35/binaryninja-api/issues/6570
Diffstat (limited to 'view/sharedcache/core/SharedCacheView.cpp')
-rw-r--r--view/sharedcache/core/SharedCacheView.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/view/sharedcache/core/SharedCacheView.cpp b/view/sharedcache/core/SharedCacheView.cpp
index a3e494e2..00caddd2 100644
--- a/view/sharedcache/core/SharedCacheView.cpp
+++ b/view/sharedcache/core/SharedCacheView.cpp
@@ -787,7 +787,8 @@ bool SharedCacheView::Init()
bool result = cacheProcessor.ProcessCache(sharedCache);
auto endTime = std::chrono::high_resolution_clock::now();
std::chrono::duration<double> elapsed = endTime - startTime;
- logger->LogInfo("Processing %zu entries took %.3f seconds", sharedCache.GetEntries().size(), elapsed.count());
+ auto entryCount = sharedCache.GetEntries().size();
+ logger->LogInfo("Processing %zu entries took %.3f seconds", entryCount, elapsed.count());
if (!result)
{
@@ -800,6 +801,10 @@ bool SharedCacheView::Init()
// Skip all the other shared cache stuff.
return true;
}
+
+ // If we can't store all of our files for this cache in the accessor cache we might run into issues, warn the user.
+ if (entryCount > FileAccessorCache::Global().GetCacheSize())
+ logger->LogWarn("Cache contains more entries than the allowed number of opened file handles, this may impact reliability.");
}
{