emrekultursay updated this revision to Diff 252888.
emrekultursay added a comment.
Applied suggestions from labath@
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D76806/new/
https://reviews.llvm.org/D76806
Files:
lldb/include/lldb/Core/SourceManager.h
lldb/source/Core/SourceManager.cpp
Index: lldb/source/Core/SourceManager.cpp
===================================================================
--- lldb/source/Core/SourceManager.cpp
+++ lldb/source/Core/SourceManager.cpp
@@ -52,27 +52,21 @@
// SourceManager constructor
SourceManager::SourceManager(const TargetSP &target_sp)
- : m_last_file_sp(), m_last_line(0), m_last_count(0), m_default_set(false),
+ : m_last_line(0), m_last_count(0), m_default_set(false),
m_target_wp(target_sp),
m_debugger_wp(target_sp->GetDebugger().shared_from_this()) {}
SourceManager::SourceManager(const DebuggerSP &debugger_sp)
- : m_last_file_sp(), m_last_line(0), m_last_count(0), m_default_set(false),
- m_target_wp(), m_debugger_wp(debugger_sp) {}
+ : m_last_line(0), m_last_count(0), m_default_set(false), m_target_wp(),
+ m_debugger_wp(debugger_sp) {}
// Destructor
SourceManager::~SourceManager() {}
SourceManager::FileSP SourceManager::GetFile(const FileSpec &file_spec) {
- bool same_as_previous =
- m_last_file_sp &&
- FileSpec::Match(file_spec, m_last_file_sp->GetFileSpec());
-
DebuggerSP debugger_sp(m_debugger_wp.lock());
FileSP file_sp;
- if (same_as_previous)
- file_sp = m_last_file_sp;
- else if (debugger_sp && debugger_sp->GetUseSourceCache())
+ if (debugger_sp && debugger_sp->GetUseSourceCache())
file_sp = debugger_sp->GetSourceFileCache().FindSourceFile(file_spec);
TargetSP target_sp(m_target_wp.lock());
@@ -178,10 +172,10 @@
m_last_line = start_line;
m_last_count = count;
- if (m_last_file_sp.get()) {
+ if (FileSP last_file_sp = GetFile(m_last_file_spec)) {
const uint32_t end_line = start_line + count - 1;
for (uint32_t line = start_line; line <= end_line; ++line) {
- if (!m_last_file_sp->LineIsValid(line)) {
+ if (!last_file_sp->LineIsValid(line)) {
m_last_line = UINT32_MAX;
break;
}
@@ -219,12 +213,12 @@
columnToHighlight = column - 1;
size_t this_line_size =
- m_last_file_sp->DisplaySourceLines(line, columnToHighlight, 0, 0, s);
+ last_file_sp->DisplaySourceLines(line, columnToHighlight, 0, 0, s);
if (column != 0 && line == curr_line &&
should_show_stop_column_with_caret(debugger_sp)) {
// Display caret cursor.
std::string src_line;
- m_last_file_sp->GetLine(line, src_line);
+ last_file_sp->GetLine(line, src_line);
s->Printf(" \t");
// Insert a space for every non-tab character in the source line.
for (size_t i = 0; i + 1 < column && i < src_line.length(); ++i)
@@ -255,10 +249,11 @@
else
start_line = 1;
- if (m_last_file_sp.get() != file_sp.get()) {
+ FileSP last_file_sp(GetLastFile());
+ if (last_file_sp.get() != file_sp.get()) {
if (line == 0)
m_last_line = 0;
- m_last_file_sp = file_sp;
+ m_last_file_spec = file_spec;
}
return DisplaySourceLinesWithLineNumbersUsingLastFile(
start_line, count, line, column, current_line_cstr, s, bp_locs);
@@ -268,14 +263,15 @@
Stream *s, uint32_t count, bool reverse, const SymbolContextList *bp_locs) {
// If we get called before anybody has set a default file and line, then try
// to figure it out here.
- const bool have_default_file_line = m_last_file_sp && m_last_line > 0;
+ FileSP last_file_sp(GetLastFile());
+ const bool have_default_file_line = last_file_sp && m_last_line > 0;
if (!m_default_set) {
FileSpec tmp_spec;
uint32_t tmp_line;
GetDefaultFileAndLine(tmp_spec, tmp_line);
}
- if (m_last_file_sp) {
+ if (last_file_sp) {
if (m_last_line == UINT32_MAX)
return 0;
@@ -310,22 +306,21 @@
bool SourceManager::SetDefaultFileAndLine(const FileSpec &file_spec,
uint32_t line) {
- FileSP old_file_sp = m_last_file_sp;
- m_last_file_sp = GetFile(file_spec);
-
m_default_set = true;
- if (m_last_file_sp) {
+ FileSP file_sp(GetFile(file_spec));
+
+ if (file_sp) {
m_last_line = line;
+ m_last_file_spec = file_spec;
return true;
} else {
- m_last_file_sp = old_file_sp;
return false;
}
}
bool SourceManager::GetDefaultFileAndLine(FileSpec &file_spec, uint32_t &line) {
- if (m_last_file_sp) {
- file_spec = m_last_file_sp->GetFileSpec();
+ if (FileSP last_file_sp = GetLastFile()) {
+ file_spec = last_file_sp->GetFileSpec();
line = m_last_line;
return true;
} else if (!m_default_set) {
@@ -355,7 +350,7 @@
.GetBaseAddress()
.CalculateSymbolContextLineEntry(line_entry)) {
SetDefaultFileAndLine(line_entry.file, line_entry.line);
- file_spec = m_last_file_sp->GetFileSpec();
+ file_spec = last_file_sp->GetFileSpec();
line = m_last_line;
return true;
}
Index: lldb/include/lldb/Core/SourceManager.h
===================================================================
--- lldb/include/lldb/Core/SourceManager.h
+++ lldb/include/lldb/Core/SourceManager.h
@@ -116,7 +116,7 @@
~SourceManager();
- FileSP GetLastFile() { return m_last_file_sp; }
+ FileSP GetLastFile() { return GetFile(m_last_file_spec); }
size_t
DisplaySourceLinesWithLineNumbers(const FileSpec &file, uint32_t line,
@@ -138,7 +138,9 @@
bool GetDefaultFileAndLine(FileSpec &file_spec, uint32_t &line);
- bool DefaultFileAndLineSet() { return (m_last_file_sp.get() != nullptr); }
+ bool DefaultFileAndLineSet() {
+ return (GetFile(m_last_file_spec).get() != nullptr);
+ }
void FindLinesMatchingRegex(FileSpec &file_spec, RegularExpression ®ex,
uint32_t start_line, uint32_t end_line,
@@ -147,7 +149,7 @@
FileSP GetFile(const FileSpec &file_spec);
protected:
- FileSP m_last_file_sp;
+ FileSpec m_last_file_spec;
uint32_t m_last_line;
uint32_t m_last_count;
bool m_default_set;
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits