================
@@ -553,9 +553,9 @@ bool ClangUserExpression::PrepareForParsing(
 }
 
 bool ClangUserExpression::TryParse(
-    DiagnosticManager &diagnostic_manager, ExecutionContextScope *exe_scope,
-    ExecutionContext &exe_ctx, lldb_private::ExecutionPolicy execution_policy,
-    bool keep_result_in_memory, bool generate_debug_info) {
+    DiagnosticManager &diagnostic_manager, ExecutionContext &exe_ctx,
+    lldb_private::ExecutionPolicy execution_policy, bool keep_result_in_memory,
+    bool generate_debug_info) {
----------------
clayborg wrote:

Jim made comments below. `ExecutionContextScope *` is just as good as an 
ExecutionContext, but it is actually more specific as a `Target`, `Process`, 
`Thread` and `StackFrame` are all `ExecutionContextScope *` objects. They just 
know how to re-create any items needed. So a `StackFrame` can use 
`ExecutionContextScope` APIs (which is virtually overrides) to get the thread, 
process and target. The `Thread` can get the process and target. The `Process` 
can get the target. So it is no better or worse, it just specifies one thing 
would be the same as having an `ExecutionContext` filled out as much as needed. 
We do need to be careful to pass in the right thing as Jim said, where if we 
only want the `Target` to be used, we shouldn't pass in a `StackFrame` as the 
`ExecutionContextScope *`, but this will be exactly the same as passing a 
`ExecutionContext` that has the stack frame filled out when we only want to 
consult the target. So no real difference, and using `ExecutionContextScope *` 
is better since we can control what we pass as the root of where to start 
looking whereas if we pass in a fully filled out ExecutionContext, we will 
always consult the deepest item (Stack, then frame, then thread, then 
process/target) if it is filled out. 

So if the ExecutionContext is always filled out correctly to the right depth, 
then calling the `exe_ctx.GetBestExecutionContextScope()` suggestion will work. 
If not, then we need to pass in the right level, or modify the ExecutionContext 
and remove items from it.

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

Reply via email to