jingham marked 2 inline comments as done.
jingham added a comment.

I added the enum, that's a good idea.

I agree that we should centralize internal reporting of Interrupt events, but 
as your "longer term" suggests, that's a design task and orthogonal to this 
patch.  I'll do that in a subsequent patch.



================
Comment at: lldb/include/lldb/Target/StackFrameList.h:103-104
 
-  void GetFramesUpTo(uint32_t end_idx);
+  /// Gets frames up to end_idx (which can be greater than the actual number of
+  /// frames.)  Returns true if the function was interrupted, false otherwise.
+  bool GetFramesUpTo(uint32_t end_idx, bool allow_interrupt = true);
----------------
mib wrote:
> jingham wrote:
> > mib wrote:
> > > bulbazord wrote:
> > > > Is the range inclusive of `end_idx`? as in, is it [0, end_idx) or [0, 
> > > > end_idx]?
> > > @bulbazord I believe this should be inclusive.
> > > 
> > > @jingham This comment sounds like we only return `true` if the function 
> > > was interrupted, which is not the expected behavior, right ?
> > The function used to return void, so it had no expected behavior before.  I 
> > am defining the "bool" return here, and I define it to be "was_interrupted" 
> > as I say in the doc string.  That's also why the return values you are 
> > questioning below are actually correct.  This is NOT returning "success" it 
> > is returning "interrupted".
> Given that this changes the behavior of `GetFramesUpTo`, I'd rather pass a 
> bool reference that says `is_interrupted` and keep `void` as the return type, 
> because `if (GetFramesUpTo(idx, true) == false)` really doesn't tell me much. 
> Looking at this code, I'd think why did `GetFramesUpTo` failed.
I still don't see this.  GetFramesUpTo says clearly what the return value is, 
so I don't see why this is confusing.  You would only thing "why did 
GetFramesUpTo fail" if you didn't read the function definition.

Moreover, the code you are looking at will always do:

 if (GetFramesUpTo(idx, AllowInterruption)) {
    // Do something that's explicitly handling interruption
 }

so it should be pretty clear what is going on.

I don't think adding another parameter is warranted.  You would have to pass it 
even it you passed DoNotAllowInterruption, which is weird.  Or we could take a 
bool * but that's just more code to no very good purpose, IMO.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D150236

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

Reply via email to