llvm-project

Форк
0
/
ValueObjectUpdater.cpp 
56 строк · 1.7 Кб
1
//===-- ValueObjectUpdater.cpp --------------------------------------------===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8

9
#include "lldb/Core/ValueObjectUpdater.h"
10

11
using namespace lldb_private;
12

13
ValueObjectUpdater::ValueObjectUpdater(lldb::ValueObjectSP in_valobj_sp) {
14
  if (!in_valobj_sp)
15
    return;
16
  // If the user passes in a value object that is dynamic or synthetic, then
17
  // water it down to the static type.
18
  m_root_valobj_sp = in_valobj_sp->GetQualifiedRepresentationIfAvailable(
19
      lldb::eNoDynamicValues, false);
20
}
21

22
lldb::ValueObjectSP ValueObjectUpdater::GetSP() {
23
  lldb::ProcessSP process_sp = GetProcessSP();
24
  if (!process_sp)
25
    return lldb::ValueObjectSP();
26

27
  const uint32_t current_stop_id = process_sp->GetLastNaturalStopID();
28
  if (current_stop_id == m_stop_id)
29
    return m_user_valobj_sp;
30

31
  m_stop_id = current_stop_id;
32

33
  if (!m_root_valobj_sp) {
34
    m_user_valobj_sp.reset();
35
    return m_root_valobj_sp;
36
  }
37

38
  m_user_valobj_sp = m_root_valobj_sp;
39

40
  lldb::ValueObjectSP dynamic_sp =
41
      m_user_valobj_sp->GetDynamicValue(lldb::eDynamicDontRunTarget);
42
  if (dynamic_sp)
43
    m_user_valobj_sp = dynamic_sp;
44

45
  lldb::ValueObjectSP synthetic_sp = m_user_valobj_sp->GetSyntheticValue();
46
  if (synthetic_sp)
47
    m_user_valobj_sp = synthetic_sp;
48

49
  return m_user_valobj_sp;
50
}
51

52
lldb::ProcessSP ValueObjectUpdater::GetProcessSP() const {
53
  if (m_root_valobj_sp)
54
    return m_root_valobj_sp->GetProcessSP();
55
  return lldb::ProcessSP();
56
}
57

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.