amccarth added inline comments.

================
Comment at: lldb/include/lldb/Utility/RangeMap.h:739
+    auto end = std::lower_bound(m_entries.begin(), m_entries.end(),
+                                Entry(addr, 1), BaseLessEqual);
+    for (auto I = m_entries.begin(); I != end; ++I) {
----------------
teemperor wrote:
> labath wrote:
> > amccarth wrote:
> > > You're trying to find an upper bound, so `std::upper_bound` seems more 
> > > natural than `std::lower_bound`.  Understanding how `std::lower_bound` 
> > > works with a comparator that implements `<=` requires some mental 
> > > gymnastics.  With `std::upper_bound`, you'd just need `<` that compares 
> > > only the base addresses.
> > > 
> > > You could even avoid the custom comparison function by using the maximum 
> > > value for the size:
> > > 
> > > ```
> > >     auto end = std::upper_bound(m_entries.begin(), m_entries.end(),
> > >                                 Entry(addr, 
> > > std::numeric_limits<Entry::SizeType>::max()));
> > > ```
> > > 
> > Actually, If I understand this correctly, there is no need for either lower 
> > or upper bound here. Since you're going to be iterating through the list 
> > anyway. It should be sufficient to add a early exit from the loop once you 
> > encounter an element whose base address is >= the address you search for.
> Oh true, I got confused by all the other lower_bounding we do in the 
> surrounding functions :)
I still don't see the early exit from the loop.  Have you uploaded the latest 
diff to Phabricator?

(Thanks Pavel for pointing out the obvious that teemperor and I both missed.)


Repository:
  rL LLVM

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D67123/new/

https://reviews.llvm.org/D67123



_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to