[Lldb-commits] [PATCH] D118972: Increase preallocated buffer for scanning the process objc classes
Jason Molenda via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Fri Feb 4 23:53:20 PST 2022
jasonmolenda updated this revision to Diff 406165.
jasonmolenda added a comment.
Update to address Jonas' feedback.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D118972/new/
https://reviews.llvm.org/D118972
Files:
lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp
Index: lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp
===================================================================
--- lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp
+++ lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp
@@ -2008,7 +2008,8 @@
shared_cache_base_addr == LLDB_INVALID_ADDRESS)
return DescriptorMapUpdateResult::Fail();
- const uint32_t num_classes = 128 * 1024;
+ // The number of entries to pre-allocate room for.
+ const uint32_t max_num_classes = 256 * 1024;
UtilityFunction *get_class_info_code = GetClassInfoUtilityFunction(exe_ctx);
if (!get_class_info_code) {
@@ -2030,7 +2031,7 @@
DiagnosticManager diagnostics;
const uint32_t class_info_byte_size = addr_size + 4;
- const uint32_t class_infos_byte_size = num_classes * class_info_byte_size;
+ const uint32_t class_infos_byte_size = max_num_classes * class_info_byte_size;
lldb::addr_t class_infos_addr = process->AllocateMemory(
class_infos_byte_size, ePermissionsReadable | ePermissionsWritable, err);
const uint32_t relative_selector_offset_addr_size = 64;
@@ -2096,10 +2097,12 @@
num_class_infos = return_value.GetScalar().ULong();
LLDB_LOG(log, "Discovered {0} Objective-C classes in the shared cache",
num_class_infos);
- assert(num_class_infos <= num_classes);
+ // Assert if there were more classes than we pre-allocated
+ // room for.
+ assert(num_class_infos <= max_num_classes);
if (num_class_infos > 0) {
- if (num_class_infos > num_classes) {
- num_class_infos = num_classes;
+ if (num_class_infos > max_num_classes) {
+ num_class_infos = max_num_classes;
success = false;
} else {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D118972.406165.patch
Type: text/x-patch
Size: 1831 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20220205/b9eb1830/attachment.bin>
More information about the lldb-commits
mailing list