Path: blob/main/contrib/llvm-project/lldb/source/ValueObject/ValueObjectUpdater.cpp
213764 views
//===-- ValueObjectUpdater.cpp --------------------------------------------===//1//2// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.3// See https://llvm.org/LICENSE.txt for license information.4// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception5//6//===----------------------------------------------------------------------===//78#include "lldb/ValueObject/ValueObjectUpdater.h"910using namespace lldb_private;1112ValueObjectUpdater::ValueObjectUpdater(lldb::ValueObjectSP in_valobj_sp) {13if (!in_valobj_sp)14return;15// If the user passes in a value object that is dynamic or synthetic, then16// water it down to the static type.17m_root_valobj_sp = in_valobj_sp->GetQualifiedRepresentationIfAvailable(18lldb::eNoDynamicValues, false);19}2021lldb::ValueObjectSP ValueObjectUpdater::GetSP() {22lldb::ProcessSP process_sp = GetProcessSP();23if (!process_sp)24return lldb::ValueObjectSP();2526const uint32_t current_stop_id = process_sp->GetLastNaturalStopID();27if (current_stop_id == m_stop_id)28return m_user_valobj_sp;2930m_stop_id = current_stop_id;3132if (!m_root_valobj_sp) {33m_user_valobj_sp.reset();34return m_root_valobj_sp;35}3637m_user_valobj_sp = m_root_valobj_sp;3839lldb::ValueObjectSP dynamic_sp =40m_user_valobj_sp->GetDynamicValue(lldb::eDynamicDontRunTarget);41if (dynamic_sp)42m_user_valobj_sp = dynamic_sp;4344lldb::ValueObjectSP synthetic_sp = m_user_valobj_sp->GetSyntheticValue();45if (synthetic_sp)46m_user_valobj_sp = synthetic_sp;4748return m_user_valobj_sp;49}5051lldb::ProcessSP ValueObjectUpdater::GetProcessSP() const {52if (m_root_valobj_sp)53return m_root_valobj_sp->GetProcessSP();54return lldb::ProcessSP();55}565758