jj10306 accepted this revision.
jj10306 added a comment.
This revision is now accepted and ready to land.

Thanks for making those changes - lgtm!



================
Comment at: lldb/source/Plugins/Trace/intel-pt/DecodedThread.h:258
   /// first one. Otherwise, this map will be empty.
   std::map<size_t, uint64_t> m_instruction_timestamps;
   /// This is the chronologically last TSC that has been added.
----------------
wallace wrote:
> jj10306 wrote:
> > wallace wrote:
> > > jj10306 wrote:
> > > > jj10306 wrote:
> > > > > I know this isn't related to these changes, but this should be 
> > > > > updated to be consistent with the other `instruction_index -> XXX` 
> > > > > maps in this class.
> > > > 
> > > in this case we can't do that, because when doing random accesses in the 
> > > trace, we need to quickly find the most recent TSC for the new 
> > > instruction, which is done with binary search using a map. This is 
> > > impossible in a hash map like DenseMap
> > I know this is a pedantic discussion, but isn't lookup in hash tables 
> > amortized O(1) (assuming a good hash that doesn't take too long to execute 
> > or produce the same hash for different values) whereas in an ordered map 
> > it's O(logn)?
> > IIUC, you should only use an ordered map when you rely on the order 
> > property of it.
> > 
> > In any case, we should use `uint64_t` here instead of `size_t` to be 
> > consistent with the type for instruction index used in the other maps.
> > In any case, we should use uint64_t here instead of size_t to be consistent 
> > with the type for instruction index used in the other maps.
> 
> you are right with this one.
> 
> > IIUC, you should only use an ordered map when you rely on the order 
> > property of it.
> 
> yes, and that's what we use for the timestamps. As there are a small number 
> of unique timestamps, we are keeping this map 'insn_index -> timestamp'. We 
> need its order property because when we do GoToId(insn_id) we need to look 
> for most recent entry in the map that has a timestamp, and we use that 
> timestamp for our new instruction. We use map.lower_bound for that. With a 
> hashmap we couldn't do that.
>We use map.lower_bound for that. With a hashmap we couldn't do that.
Ahhh yes, that makes sense - I forgot we were using that


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D123982

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

Reply via email to