[Lldb-commits] [PATCH] D25569: Minidump plugin: functions parsing memory structures and filtering module list

Zachary Turner via lldb-commits lldb-commits at lists.llvm.org
Fri Oct 14 13:02:23 PDT 2016


zturner added inline comments.


================
Comment at: source/Plugins/Process/minidump/MinidumpParser.cpp:242
+
+  for (const auto &module : modules) {
+    name = GetMinidumpString(module.module_name_rva);
----------------
I don't know how big the minidumps you're working with are or if performance is a concern, but `std::map<>` is more or less a piece of junk.  The only time it should really be used is if you need a deterministic iteration order.  `std::unordered_map<>` is slightly better.  Better still is `llvm::StringMap<>`


================
Comment at: source/Plugins/Process/minidump/MinidumpParser.cpp:281
+
+  if (data.size() == 0 && data64.size() == 0)
+    return llvm::None;
----------------
`data.empty()`?


================
Comment at: source/Plugins/Process/minidump/MinidumpParser.cpp:284
+
+  if (data.size() > 0) {
+    llvm::ArrayRef<MinidumpMemoryDescriptor> memory_list =
----------------
`!data.empty()`?


================
Comment at: source/Plugins/Process/minidump/MinidumpParser.cpp:291
+
+    for (auto memory_desc : memory_list) {
+      const MinidumpLocationDescriptor &loc_desc = memory_desc.memory;
----------------
`auto &` to avoid a copy.


================
Comment at: source/Plugins/Process/minidump/MinidumpParser.cpp:320
+
+    for (auto memory_desc64 : memory64_list) {
+      const lldb::addr_t range_start = memory_desc64.start_of_memory_range;
----------------
`auto &`


================
Comment at: source/Plugins/Process/minidump/MinidumpTypes.cpp:222
+
+  if (header->size_of_header > sizeof(MinidumpMemoryInfoListHeader)) {
+    data = data.drop_front(header->size_of_header -
----------------
I don't think you need the conditional here do you?  Just `data = data.drop_front(sizeof_MinidumpMemoryInfoListHeader)`.


================
Comment at: source/Plugins/Process/minidump/MinidumpTypes.h:268
+  MemFree = 0x10000,
+  MemReserve = 0x2000,
+};
----------------
Can you use `llvm/ADT/BitmaskEnum.h` here to give this enum bitwise operators?


================
Comment at: source/Plugins/Process/minidump/MinidumpTypes.h:274
+  MemMapped = 0x40000,
+  MemPrivate = 0x20000,
+};
----------------
Same


================
Comment at: source/Plugins/Process/minidump/MinidumpTypes.h:294
+  PageExecutable = PageExecute | PageExecuteRead | PageExecuteReadWrite |
+                   PageExecuteWriteCopy,
+};
----------------
Same


https://reviews.llvm.org/D25569





More information about the lldb-commits mailing list