adrian-prantl wrote:

> When we were talking about this originally I thought that StackFrames would 
> get an "ImplementationFrame" property, and we would use that to determine 
> whether to hide the frame in bt (when not passing --unfiltered). Then the 
> frame recognizers when they are run on the frame in the ordinary course of 
> things (we do this to determine recognized args anyway) they would set the 
> property on the StackFrame. Then StackFrameList could just check that 
> property. RecognizeFrame might be expensive, and we don't currently have any 
> machinery in place to make sure it caches the results per stop. Most of the 
> RecognizeFrame's just do the work every time. I also think for structural 
> reasons we shouldn't force FrameRecognizers to be the only entity that can 
> mark frames as "should be hidden."

I understand that not recomputing them might be desirable, but this is not how 
recognizers currently work. The only place frame recognizers currently get 
called is by `Thread::GetStopDescription()` (for frame #0) and by 
`Thread::GetCurrentException()` (also frame #0). So it's not true that we are 
computing them anyway and thus have an opportunity to precompute the isHidden 
attribute. I also think that from an architectural perspective it would be 
wrong for a frame recognizer to be allowed to modify the state of a StackFrame.

When a frame recognizer is registered it takes a module regex a function regex 
and a first_instruction flag. All three of these must match before the 
recognizer is executed. That's num_recognizers*num_frames regexes. That's not 
expensive in the grans scheme of things, but you're right that it's not 
necessary.

I'll see if I can hide the recognizer invocation inside 
StackFrame::shouldHide() and let StackFrame cache the result instead of having 
the Recognizer modify the StackFrame. Maybe I can come up with some cache 
invalidation strategy that makes sense.

https://github.com/llvm/llvm-project/pull/104523
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to