vsk added inline comments.
================ Comment at: lldb/include/lldb/Symbol/Function.h:258 + +using CallSiteParameterArray = std::unique_ptr<std::vector<CallSiteParameter>>; + ---------------- aprantl wrote: > vsk wrote: > > vsk wrote: > > > aprantl wrote: > > > > vsk wrote: > > > > > grandinj wrote: > > > > > > the way this is being used seems to indicate it can be > > > > > > std::vector<CallSiteParameter> > > > > > > no need for unique_ptr > > > > > That's a totally fair point. The reason I've used unique_ptr here is > > > > > to save space in CallEdge in the common case, where no call site > > > > > information is loaded for the function. Call site info is lazily > > > > > parsed, so we'd like to take a minimal memory hit for functions that > > > > > aren't in a backtrace. > > > > > > > > > > Also, note that using a pointer allows for a further PointerIntPair > > > > > memory optimization mentioned below. > > > > Can you document this decision up there? > > > Done. And, thanks @grandinj for pointing this out, I dug a bit more and > > > found that we're *not* doing this in Function for the CallEdge vector, > > > but probably should be. Added a TODO there. > > Actually, there's no need to do this in both CallEdge and Function: edges > > are parsed lazily, but parameters aren't. Let's just leave a note about > > this in Function. > Is a SmallVector<0> (16 bytes on x86_64) smaller than a libcxx std::vector<>? Oh, yes. ================ Comment at: lldb/source/Expression/DWARFExpression.cpp:1199 + } else { + for (CallEdge &edge : parent_func->GetTailCallingEdges()) { + if (edge.GetCallee(modlist) == current_func) { ---------------- aprantl wrote: > std::find_if or something? I tried this, but the resulting code did not look clearer to me. ================ Comment at: lldb/source/Expression/DWARFExpression.cpp:1236 + // expression in the call site parameter are known to have the same length. + // Check whether they are equal. + if (memcmp(subexpr_data, param_subexpr_data, subexpr_len) == 0) { ---------------- aprantl wrote: > Here the comments are not enough for me to follow why we are doing this? > Could you explain it to me and then add that to the comment as well? > > What would an example DW_OP_entry_value and matching call site parameter look > like? I added a worked-through example at the start of the function -- is that ok? CHANGES SINCE LAST ACTION https://reviews.llvm.org/D67376/new/ https://reviews.llvm.org/D67376 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits