Index: lldb/trunk/include/lldb/Core/PluginManager.h =================================================================== --- lldb/trunk/include/lldb/Core/PluginManager.h +++ lldb/trunk/include/lldb/Core/PluginManager.h @@ -263,7 +263,7 @@ static lldb::ScriptInterpreterSP GetScriptInterpreterForLanguage(lldb::ScriptLanguage script_lang, - CommandInterpreter &interpreter); + Debugger &debugger); // StructuredDataPlugin Index: lldb/trunk/include/lldb/Interpreter/ScriptInterpreter.h =================================================================== --- lldb/trunk/include/lldb/Interpreter/ScriptInterpreter.h +++ lldb/trunk/include/lldb/Interpreter/ScriptInterpreter.h @@ -52,8 +52,7 @@ eScriptReturnTypeOpaqueObject } ScriptReturnType; - ScriptInterpreter(CommandInterpreter &interpreter, - lldb::ScriptLanguage script_lang); + ScriptInterpreter(Debugger &debugger, lldb::ScriptLanguage script_lang); ~ScriptInterpreter() override; @@ -247,7 +246,7 @@ lldb::BreakpointSP &bkpt_sp) { return StructuredData::GenericSP(); } - + virtual bool ScriptedBreakpointResolverSearchCallback(StructuredData::GenericSP implementor_sp, SymbolContext *sym_ctx) @@ -460,8 +459,6 @@ int GetMasterFileDescriptor(); - CommandInterpreter &GetCommandInterpreter(); - static std::string LanguageToString(lldb::ScriptLanguage language); static lldb::ScriptLanguage StringToLanguage(const llvm::StringRef &string); @@ -471,7 +468,7 @@ lldb::ScriptLanguage GetLanguage() { return m_script_lang; } protected: - CommandInterpreter &m_interpreter; + Debugger &m_debugger; lldb::ScriptLanguage m_script_lang; }; Index: lldb/trunk/include/lldb/lldb-private-interfaces.h =================================================================== --- lldb/trunk/include/lldb/lldb-private-interfaces.h +++ lldb/trunk/include/lldb/lldb-private-interfaces.h @@ -66,7 +66,7 @@ lldb::TargetSP target_sp, lldb::ListenerSP listener_sp, const FileSpec *crash_file_path); typedef lldb::ScriptInterpreterSP (*ScriptInterpreterCreateInstance)( - CommandInterpreter &interpreter); + Debugger &debugger); typedef SymbolFile *(*SymbolFileCreateInstance)(ObjectFile *obj_file); typedef SymbolVendor *(*SymbolVendorCreateInstance)( const lldb::ModuleSP &module_sp, Index: lldb/trunk/source/Core/PluginManager.cpp =================================================================== --- lldb/trunk/source/Core/PluginManager.cpp +++ lldb/trunk/source/Core/PluginManager.cpp @@ -1516,8 +1516,9 @@ return nullptr; } -lldb::ScriptInterpreterSP PluginManager::GetScriptInterpreterForLanguage( - lldb::ScriptLanguage script_lang, CommandInterpreter &interpreter) { +lldb::ScriptInterpreterSP +PluginManager::GetScriptInterpreterForLanguage(lldb::ScriptLanguage script_lang, + Debugger &debugger) { std::lock_guard guard(GetScriptInterpreterMutex()); ScriptInterpreterInstances &instances = GetScriptInterpreterInstances(); @@ -1528,12 +1529,12 @@ none_instance = pos->create_callback; if (script_lang == pos->language) - return pos->create_callback(interpreter); + return pos->create_callback(debugger); } // If we didn't find one, return the ScriptInterpreter for the null language. assert(none_instance != nullptr); - return none_instance(interpreter); + return none_instance(debugger); } #pragma mark - Index: lldb/trunk/source/Interpreter/CommandInterpreter.cpp =================================================================== --- lldb/trunk/source/Interpreter/CommandInterpreter.cpp +++ lldb/trunk/source/Interpreter/CommandInterpreter.cpp @@ -2507,7 +2507,7 @@ return nullptr; lldb::ScriptLanguage script_lang = GetDebugger().GetScriptLanguage(); m_script_interpreter_sp = - PluginManager::GetScriptInterpreterForLanguage(script_lang, *this); + PluginManager::GetScriptInterpreterForLanguage(script_lang, m_debugger); } return m_script_interpreter_sp.get(); } Index: lldb/trunk/source/Interpreter/ScriptInterpreter.cpp =================================================================== --- lldb/trunk/source/Interpreter/ScriptInterpreter.cpp +++ lldb/trunk/source/Interpreter/ScriptInterpreter.cpp @@ -21,16 +21,12 @@ using namespace lldb; using namespace lldb_private; -ScriptInterpreter::ScriptInterpreter(CommandInterpreter &interpreter, +ScriptInterpreter::ScriptInterpreter(Debugger &debugger, lldb::ScriptLanguage script_lang) - : m_interpreter(interpreter), m_script_lang(script_lang) {} + : m_debugger(debugger), m_script_lang(script_lang) {} ScriptInterpreter::~ScriptInterpreter() {} -CommandInterpreter &ScriptInterpreter::GetCommandInterpreter() { - return m_interpreter; -} - void ScriptInterpreter::CollectDataForBreakpointCommandCallback( std::vector &bp_options_vec, CommandReturnObject &result) { Index: lldb/trunk/source/Plugins/ScriptInterpreter/None/ScriptInterpreterNone.h =================================================================== --- lldb/trunk/source/Plugins/ScriptInterpreter/None/ScriptInterpreterNone.h +++ lldb/trunk/source/Plugins/ScriptInterpreter/None/ScriptInterpreterNone.h @@ -15,7 +15,7 @@ class ScriptInterpreterNone : public ScriptInterpreter { public: - ScriptInterpreterNone(CommandInterpreter &interpreter); + ScriptInterpreterNone(Debugger &debugger); ~ScriptInterpreterNone() override; @@ -30,8 +30,7 @@ static void Terminate(); - static lldb::ScriptInterpreterSP - CreateInstance(CommandInterpreter &interpreter); + static lldb::ScriptInterpreterSP CreateInstance(Debugger &debugger); static lldb_private::ConstString GetPluginNameStatic(); Index: lldb/trunk/source/Plugins/ScriptInterpreter/None/ScriptInterpreterNone.cpp =================================================================== --- lldb/trunk/source/Plugins/ScriptInterpreter/None/ScriptInterpreterNone.cpp +++ lldb/trunk/source/Plugins/ScriptInterpreter/None/ScriptInterpreterNone.cpp @@ -10,7 +10,6 @@ #include "lldb/Core/Debugger.h" #include "lldb/Core/PluginManager.h" #include "lldb/Core/StreamFile.h" -#include "lldb/Interpreter/CommandInterpreter.h" #include "lldb/Utility/Stream.h" #include "lldb/Utility/StringList.h" @@ -21,21 +20,21 @@ using namespace lldb; using namespace lldb_private; -ScriptInterpreterNone::ScriptInterpreterNone(CommandInterpreter &interpreter) - : ScriptInterpreter(interpreter, eScriptLanguageNone) {} +ScriptInterpreterNone::ScriptInterpreterNone(Debugger &debugger) + : ScriptInterpreter(debugger, eScriptLanguageNone) {} ScriptInterpreterNone::~ScriptInterpreterNone() {} bool ScriptInterpreterNone::ExecuteOneLine(llvm::StringRef command, CommandReturnObject *, const ExecuteScriptOptions &) { - m_interpreter.GetDebugger().GetErrorFile()->PutCString( + m_debugger.GetErrorFile()->PutCString( "error: there is no embedded script interpreter in this mode.\n"); return false; } void ScriptInterpreterNone::ExecuteInterpreterLoop() { - m_interpreter.GetDebugger().GetErrorFile()->PutCString( + m_debugger.GetErrorFile()->PutCString( "error: there is no embedded script interpreter in this mode.\n"); } @@ -52,8 +51,8 @@ void ScriptInterpreterNone::Terminate() {} lldb::ScriptInterpreterSP -ScriptInterpreterNone::CreateInstance(CommandInterpreter &interpreter) { - return std::make_shared(interpreter); +ScriptInterpreterNone::CreateInstance(Debugger &debugger) { + return std::make_shared(debugger); } lldb_private::ConstString ScriptInterpreterNone::GetPluginNameStatic() { Index: lldb/trunk/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.h =================================================================== --- lldb/trunk/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.h +++ lldb/trunk/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.h @@ -36,8 +36,8 @@ } }; - ScriptInterpreterPython(CommandInterpreter &interpreter) - : ScriptInterpreter(interpreter, lldb::eScriptLanguagePython), + ScriptInterpreterPython(Debugger &debugger) + : ScriptInterpreter(debugger, lldb::eScriptLanguagePython), IOHandlerDelegateMultiline("DONE") {} static void Initialize(); Index: lldb/trunk/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp =================================================================== --- lldb/trunk/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp +++ lldb/trunk/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp @@ -441,15 +441,13 @@ DoFreeLock(); } -ScriptInterpreterPythonImpl::ScriptInterpreterPythonImpl( - CommandInterpreter &interpreter) - : ScriptInterpreterPython(interpreter), m_saved_stdin(), m_saved_stdout(), +ScriptInterpreterPythonImpl::ScriptInterpreterPythonImpl(Debugger &debugger) + : ScriptInterpreterPython(debugger), m_saved_stdin(), m_saved_stdout(), m_saved_stderr(), m_main_module(), m_session_dict(PyInitialValue::Invalid), m_sys_module_dict(PyInitialValue::Invalid), m_run_one_line_function(), m_run_one_line_str_global(), - m_dictionary_name( - interpreter.GetDebugger().GetInstanceName().AsCString()), + m_dictionary_name(m_debugger.GetInstanceName().AsCString()), m_terminal_state(), m_active_io_handler(eIOHandlerNone), m_session_is_active(false), m_pty_slave_is_open(false), m_valid_session(true), m_lock_count(0), m_command_thread_state(nullptr) { @@ -495,8 +493,7 @@ run_string.Printf("run_one_line (%s, 'lldb.debugger_unique_id = %" PRIu64 "; pydoc.pager = pydoc.plainpager')", - m_dictionary_name.c_str(), - interpreter.GetDebugger().GetID()); + m_dictionary_name.c_str(), m_debugger.GetID()); PyRun_SimpleString(run_string.GetData()); } @@ -549,7 +546,7 @@ void ScriptInterpreterPythonImpl::IOHandlerInputComplete(IOHandler &io_handler, std::string &data) { io_handler.SetIsDone(true); - bool batch_mode = m_interpreter.GetBatchCommandMode(); + bool batch_mode = m_debugger.GetCommandInterpreter().GetBatchCommandMode(); switch (m_active_io_handler) { case eIOHandlerNone: @@ -608,8 +605,8 @@ } lldb::ScriptInterpreterSP -ScriptInterpreterPythonImpl::CreateInstance(CommandInterpreter &interpreter) { - return std::make_shared(interpreter); +ScriptInterpreterPythonImpl::CreateInstance(Debugger &debugger) { + return std::make_shared(debugger); } void ScriptInterpreterPythonImpl::ResetOutputFileHandle(FILE *fh) {} @@ -711,11 +708,10 @@ if (on_entry_flags & Locker::InitGlobals) { run_string.Printf("run_one_line (%s, 'lldb.debugger_unique_id = %" PRIu64, - m_dictionary_name.c_str(), - GetCommandInterpreter().GetDebugger().GetID()); + m_dictionary_name.c_str(), m_debugger.GetID()); run_string.Printf( "; lldb.debugger = lldb.SBDebugger.FindDebuggerWithID (%" PRIu64 ")", - GetCommandInterpreter().GetDebugger().GetID()); + m_debugger.GetID()); run_string.PutCString("; lldb.target = lldb.debugger.GetSelectedTarget()"); run_string.PutCString("; lldb.process = lldb.target.GetProcess()"); run_string.PutCString("; lldb.thread = lldb.process.GetSelectedThread ()"); @@ -725,11 +721,10 @@ // If we aren't initing the globals, we should still always set the // debugger (since that is always unique.) run_string.Printf("run_one_line (%s, 'lldb.debugger_unique_id = %" PRIu64, - m_dictionary_name.c_str(), - GetCommandInterpreter().GetDebugger().GetID()); + m_dictionary_name.c_str(), m_debugger.GetID()); run_string.Printf( "; lldb.debugger = lldb.SBDebugger.FindDebuggerWithID (%" PRIu64 ")", - GetCommandInterpreter().GetDebugger().GetID()); + m_debugger.GetID()); run_string.PutCString("')"); } @@ -746,8 +741,7 @@ lldb::StreamFileSP out_sp; lldb::StreamFileSP err_sp; if (!in_file.IsValid() || !out_file.IsValid() || !err_file.IsValid()) - m_interpreter.GetDebugger().AdoptTopIOHandlerFilesIfInvalid(in_sp, out_sp, - err_sp); + m_debugger.AdoptTopIOHandlerFilesIfInvalid(in_sp, out_sp, err_sp); if (on_entry_flags & Locker::NoSTDIN) { m_saved_stdin.Reset(); @@ -871,7 +865,7 @@ // another string to pass to PyRun_SimpleString messes up the escaping. So // we use the following more complicated method to pass the command string // directly down to Python. - Debugger &debugger = m_interpreter.GetDebugger(); + Debugger &debugger = m_debugger; StreamFileSP input_file_sp; StreamFileSP output_file_sp; @@ -1018,7 +1012,7 @@ static Timer::Category func_cat(LLVM_PRETTY_FUNCTION); Timer scoped_timer(func_cat, LLVM_PRETTY_FUNCTION); - Debugger &debugger = GetCommandInterpreter().GetDebugger(); + Debugger &debugger = m_debugger; // At the moment, the only time the debugger does not have an input file // handle is when this is called directly from Python, in which case it is @@ -1274,14 +1268,15 @@ std::vector &bp_options_vec, CommandReturnObject &result) { m_active_io_handler = eIOHandlerBreakpoint; - m_interpreter.GetPythonCommandsFromIOHandler(" ", *this, true, - &bp_options_vec); + m_debugger.GetCommandInterpreter().GetPythonCommandsFromIOHandler( + " ", *this, true, &bp_options_vec); } void ScriptInterpreterPythonImpl::CollectDataForWatchpointCommandCallback( WatchpointOptions *wp_options, CommandReturnObject &result) { m_active_io_handler = eIOHandlerWatchpoint; - m_interpreter.GetPythonCommandsFromIOHandler(" ", *this, true, wp_options); + m_debugger.GetCommandInterpreter().GetPythonCommandsFromIOHandler( + " ", *this, true, wp_options); } void ScriptInterpreterPythonImpl::SetBreakpointCommandCallbackFunction( @@ -1290,8 +1285,9 @@ std::string oneliner("return "); oneliner += function_name; oneliner += "(frame, bp_loc, internal_dict)"; - m_interpreter.GetScriptInterpreter()->SetBreakpointCommandCallback( - bp_options, oneliner.c_str()); + m_debugger.GetCommandInterpreter() + .GetScriptInterpreter() + ->SetBreakpointCommandCallback(bp_options, oneliner.c_str()); } Status ScriptInterpreterPythonImpl::SetBreakpointCommandCallback( @@ -2109,8 +2105,7 @@ StructuredData::GenericSP ScriptInterpreterPythonImpl::CreateScriptCommandObject(const char *class_name) { - DebuggerSP debugger_sp( - GetCommandInterpreter().GetDebugger().shared_from_this()); + DebuggerSP debugger_sp(m_debugger.shared_from_this()); if (class_name == nullptr || class_name[0] == '\0') return StructuredData::GenericSP(); @@ -2718,7 +2713,7 @@ return false; } - lldb::DebuggerSP debugger_sp = m_interpreter.GetDebugger().shared_from_this(); + lldb::DebuggerSP debugger_sp = m_debugger.shared_from_this(); { FileSpec target_file(pathname); @@ -2912,7 +2907,7 @@ return false; } - lldb::DebuggerSP debugger_sp = m_interpreter.GetDebugger().shared_from_this(); + lldb::DebuggerSP debugger_sp = m_debugger.shared_from_this(); lldb::ExecutionContextRefSP exe_ctx_ref_sp(new ExecutionContextRef(exe_ctx)); if (!debugger_sp.get()) { @@ -2956,7 +2951,7 @@ return false; } - lldb::DebuggerSP debugger_sp = m_interpreter.GetDebugger().shared_from_this(); + lldb::DebuggerSP debugger_sp = m_debugger.shared_from_this(); lldb::ExecutionContextRefSP exe_ctx_ref_sp(new ExecutionContextRef(exe_ctx)); if (!debugger_sp.get()) { Index: lldb/trunk/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPythonImpl.h =================================================================== --- lldb/trunk/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPythonImpl.h +++ lldb/trunk/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPythonImpl.h @@ -29,7 +29,7 @@ public: friend class IOHandlerPythonInterpreter; - ScriptInterpreterPythonImpl(CommandInterpreter &interpreter); + ScriptInterpreterPythonImpl(Debugger &debugger); ~ScriptInterpreterPythonImpl() override; @@ -273,8 +273,7 @@ void IOHandlerInputComplete(IOHandler &io_handler, std::string &data) override; - static lldb::ScriptInterpreterSP - CreateInstance(CommandInterpreter &interpreter); + static lldb::ScriptInterpreterSP CreateInstance(Debugger &debugger); // PluginInterface protocol lldb_private::ConstString GetPluginName() override;