labath added a comment.

I was waiting for the dependant patch to take shape. This looks ok to me -- 
just one small design question.



================
Comment at: lldb/include/lldb/Target/Target.h:1120
+  ///   The trace object. It might be undefined.
+  lldb::TraceSP &GetTrace();
+
----------------
`const TraceSP &` ?


================
Comment at: lldb/source/Plugins/Trace/intel-pt/TraceIntelPT.cpp:61
+                                     const std::vector<TargetSP> &targets) {
+  TraceSP trace_instance(new TraceIntelPT(pt_cpu, targets));
+  for (const TargetSP &target_sp : targets)
----------------
auto trace_instance = std::make_shared<TraceIntelPT>(...)


================
Comment at: lldb/source/Plugins/Trace/intel-pt/TraceIntelPT.cpp:63
+  for (const TargetSP &target_sp : targets)
+    target_sp->SetTrace(trace_instance->shared_from_this());
+
----------------
`SetTrace(trace_instance)`


================
Comment at: lldb/source/Target/Thread.cpp:1617-1627
+void Thread::DumpTraceInstructions(Stream &s, size_t count,
+                                   size_t start_position) const {
+  if (!GetProcess()->GetTarget().GetTrace()) {
+    s << "error: no trace in this target\n";
+    return;
+  }
+  s.Printf("thread #%u: tid = %" PRIu64 ", total instructions = 1000\n",
----------------
Given the intended design of having one process (and thread) class serve 
multiple trace types, can this function do anything useful besides calling into 
the Trace object to perform trace-specific dumping ?

And if it cannot, couldn't we just skip it have have callers call the relevant 
Trace method directly?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D88769

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

Reply via email to