[Lldb-commits] [lldb] [LLDB][NFC] Remove redundant target/process checks in SBFrame (PR #153258)
Med Ismail Bennani via lldb-commits
lldb-commits at lists.llvm.org
Fri Dec 12 11:17:28 PST 2025
================
@@ -490,99 +490,85 @@ SBValue SBFrame::FindValue(const char *name, ValueType value_type,
if (!exe_ctx) {
LLDB_LOG_ERROR(GetLog(LLDBLog::API), exe_ctx.takeError(), "{0}");
return value_sp;
- } else {
- Target *target = exe_ctx->GetTargetPtr();
- Process *process = exe_ctx->GetProcessPtr();
- if (target && process) { // FIXME: this check is redundant.
- if (StackFrame *frame = exe_ctx->GetFramePtr()) {
- VariableList variable_list;
-
- switch (value_type) {
- case eValueTypeVariableGlobal: // global variable
- case eValueTypeVariableStatic: // static variable
- case eValueTypeVariableArgument: // function argument variables
- case eValueTypeVariableLocal: // function local variables
- case eValueTypeVariableThreadLocal: // thread local variables
- {
- SymbolContext sc(frame->GetSymbolContext(eSymbolContextBlock));
-
- const bool can_create = true;
- const bool get_parent_variables = true;
- const bool stop_if_block_is_inlined_function = true;
-
- if (sc.block)
- sc.block->AppendVariables(
- can_create, get_parent_variables,
- stop_if_block_is_inlined_function,
- [frame](Variable *v) { return v->IsInScope(frame); },
- &variable_list);
- if (value_type == eValueTypeVariableGlobal
- || value_type == eValueTypeVariableStatic) {
- const bool get_file_globals = true;
- VariableList *frame_vars = frame->GetVariableList(get_file_globals,
- nullptr);
- if (frame_vars)
- frame_vars->AppendVariablesIfUnique(variable_list);
- }
- ConstString const_name(name);
- VariableSP variable_sp(
- variable_list.FindVariable(const_name, value_type));
- if (variable_sp) {
- value_sp = frame->GetValueObjectForFrameVariable(variable_sp,
- eNoDynamicValues);
- sb_value.SetSP(value_sp, use_dynamic);
- }
- } break;
-
- case eValueTypeRegister: // stack frame register value
- {
- RegisterContextSP reg_ctx(frame->GetRegisterContext());
- if (reg_ctx) {
- if (const RegisterInfo *reg_info =
- reg_ctx->GetRegisterInfoByName(name)) {
- value_sp = ValueObjectRegister::Create(frame, reg_ctx, reg_info);
- sb_value.SetSP(value_sp);
- }
- }
- } break;
-
- case eValueTypeRegisterSet: // A collection of stack frame register
- // values
- {
- RegisterContextSP reg_ctx(frame->GetRegisterContext());
- if (reg_ctx) {
- const uint32_t num_sets = reg_ctx->GetRegisterSetCount();
- for (uint32_t set_idx = 0; set_idx < num_sets; ++set_idx) {
- const RegisterSet *reg_set = reg_ctx->GetRegisterSet(set_idx);
- if (reg_set &&
- (llvm::StringRef(reg_set->name).equals_insensitive(name) ||
- llvm::StringRef(reg_set->short_name)
- .equals_insensitive(name))) {
- value_sp =
- ValueObjectRegisterSet::Create(frame, reg_ctx, set_idx);
- sb_value.SetSP(value_sp);
- break;
- }
- }
- }
- } break;
-
- case eValueTypeConstResult: // constant result variables
- {
- ConstString const_name(name);
- ExpressionVariableSP expr_var_sp(
- target->GetPersistentVariable(const_name));
- if (expr_var_sp) {
- value_sp = expr_var_sp->GetValueObject();
- sb_value.SetSP(value_sp, use_dynamic);
- }
- } break;
-
- default:
+ }
+
+ StackFrame *frame = exe_ctx->GetFramePtr();
----------------
medismailben wrote:
Might be worth moving all this logic out of the SB layer
https://github.com/llvm/llvm-project/pull/153258
More information about the lldb-commits
mailing list