diff options
Diffstat (limited to 'lldb/source/Core/Debugger.cpp')
-rw-r--r-- | lldb/source/Core/Debugger.cpp | 35 |
1 files changed, 14 insertions, 21 deletions
diff --git a/lldb/source/Core/Debugger.cpp b/lldb/source/Core/Debugger.cpp index 80035363650..ace2c9a54f9 100644 --- a/lldb/source/Core/Debugger.cpp +++ b/lldb/source/Core/Debugger.cpp @@ -230,8 +230,7 @@ Debugger::Debugger () : m_listener ("lldb.Debugger"), m_source_manager (), m_command_interpreter_ap (new CommandInterpreter (*this, eScriptLanguageDefault, false)), - m_input_readers_mutex (Mutex::eMutexTypeRecursive), - m_input_readers (), + m_input_reader_stack (), m_input_reader_data () { m_command_interpreter_ap->Initialize (); @@ -357,14 +356,13 @@ Debugger::GetCurrentInputReader () { InputReaderSP reader_sp; - Mutex::Locker locker (m_input_readers_mutex); - if (!m_input_readers.empty()) + if (!m_input_reader_stack.IsEmpty()) { // Clear any finished readers from the stack while (CheckIfTopInputReaderIsDone()) ; - if (!m_input_readers.empty()) - reader_sp = m_input_readers.top(); + if (!m_input_reader_stack.IsEmpty()) + reader_sp = m_input_reader_stack.Top(); } return reader_sp; @@ -424,9 +422,8 @@ Debugger::CleanUpInputReaders () { m_input_reader_data.clear(); - Mutex::Locker locker (m_input_readers_mutex); // The bottom input reader should be the main debugger input reader. We do not want to close that one here. - while (m_input_readers.size() > 1) + while (m_input_reader_stack.GetSize() > 1) { InputReaderSP reader_sp (GetCurrentInputReader ()); if (reader_sp) @@ -479,8 +476,7 @@ Debugger::WriteToDefaultReader (const char *bytes, size_t bytes_len) if (m_input_reader_data.empty()) return; - Mutex::Locker locker (m_input_readers_mutex); - while (!m_input_readers.empty() && !m_input_reader_data.empty()) + while (!m_input_reader_stack.IsEmpty() && !m_input_reader_data.empty()) { // Get the input reader from the top of the stack InputReaderSP reader_sp (GetCurrentInputReader ()); @@ -519,8 +515,7 @@ Debugger::PushInputReader (const InputReaderSP& reader_sp) if (top_reader_sp) top_reader_sp->Notify (eInputReaderDeactivate); - Mutex::Locker locker (m_input_readers_mutex); - m_input_readers.push (reader_sp); + m_input_reader_stack.Push (reader_sp); reader_sp->Notify (eInputReaderActivate); ActivateInputReader (reader_sp); } @@ -532,22 +527,21 @@ Debugger::PopInputReader (const lldb::InputReaderSP& pop_reader_sp) // The reader on the stop of the stack is done, so let the next // read on the stack referesh its prompt and if there is one... - Mutex::Locker locker (m_input_readers_mutex); - if (!m_input_readers.empty()) + if (!m_input_reader_stack.IsEmpty()) { // Cannot call GetCurrentInputReader here, as that would cause an infinite loop. - InputReaderSP reader_sp(m_input_readers.top()); + InputReaderSP reader_sp(m_input_reader_stack.Top()); if (!pop_reader_sp || pop_reader_sp.get() == reader_sp.get()) { - m_input_readers.pop (); + m_input_reader_stack.Pop (); reader_sp->Notify (eInputReaderDeactivate); reader_sp->Notify (eInputReaderDone); result = true; - if (!m_input_readers.empty()) + if (!m_input_reader_stack.IsEmpty()) { - reader_sp = m_input_readers.top(); + reader_sp = m_input_reader_stack.Top(); if (reader_sp) { ActivateInputReader (reader_sp); @@ -563,11 +557,10 @@ bool Debugger::CheckIfTopInputReaderIsDone () { bool result = false; - Mutex::Locker locker (m_input_readers_mutex); - if (!m_input_readers.empty()) + if (!m_input_reader_stack.IsEmpty()) { // Cannot call GetCurrentInputReader here, as that would cause an infinite loop. - InputReaderSP reader_sp(m_input_readers.top()); + InputReaderSP reader_sp(m_input_reader_stack.Top()); if (reader_sp && reader_sp->IsDone()) { |