summaryrefslogtreecommitdiff
path: root/view/sharedcache/workflow
diff options
context:
space:
mode:
authorMason Reed <mason@vector35.com>2025-04-28 13:58:20 -0400
committerMason Reed <mason@vector35.com>2025-04-28 18:28:31 -0400
commit4b04f93ad0161bef8434300a153aed4f5ec100f9 (patch)
tree0b48471b529715244fd991bf56cc1dddb7799c43 /view/sharedcache/workflow
parent080495bb84cf76f549a79b27957b561453452695 (diff)
Misc shared cache performance improvements
Diffstat (limited to 'view/sharedcache/workflow')
-rw-r--r--view/sharedcache/workflow/SharedCacheWorkflow.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/view/sharedcache/workflow/SharedCacheWorkflow.cpp b/view/sharedcache/workflow/SharedCacheWorkflow.cpp
index c0c90f87..7f63866a 100644
--- a/view/sharedcache/workflow/SharedCacheWorkflow.cpp
+++ b/view/sharedcache/workflow/SharedCacheWorkflow.cpp
@@ -120,7 +120,7 @@ void AnalyzeStubFunction(Ref<Function> func, Ref<MediumLevelILFunction> mlil, Sh
auto view = func->GetView();
auto loadStubIslandRegion = [&](uint64_t regionAddr) {
auto region = controller.GetRegionContaining(regionAddr);
- if (!region.has_value())
+ if (!region.has_value() || controller.IsRegionLoaded(*region))
return false;
// Only interested in non image regions, we DON'T want to implicitly load image regions (with functions presumably).
if (region->type == SharedCacheRegionTypeImage)
@@ -133,7 +133,7 @@ void AnalyzeStubFunction(Ref<Function> func, Ref<MediumLevelILFunction> mlil, Sh
// We allow the user to automatically load the directly referenced objc images as having the calls inlined is extremely useful for objc.
auto loadTargetImage = [&](uint64_t imageAddr) {
const auto image = controller.GetImageContaining(imageAddr);
- if (!image.has_value())
+ if (!image.has_value() || controller.IsImageLoaded(*image))
return false;
return controller.ApplyImage(*view, *image);
};
@@ -242,7 +242,7 @@ void AnalyzeStandardFunction(Ref<Function> func, Ref<MediumLevelILFunction> mlil
if (view->IsValidOffset(regionAddr))
return false;
auto region = controller.GetRegionContaining(regionAddr);
- if (!region.has_value())
+ if (!region.has_value() || controller.IsRegionLoaded(*region))
return false;
// Only interested in non image regions, we DON'T want to implicitly load image regions (with functions presumably).
if (region->type == SharedCacheRegionTypeImage)