diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2016-07-23 20:50:09 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2016-07-23 20:50:09 +0000 |
commit | f3fbd1c0586ff6ec7895991e6c28f61a503c36a8 (patch) | |
tree | 48d008fd3df8c0e73271a4b18474e0aac6dbfe33 /source/Target/LanguageRuntime.cpp | |
parent | 2fc5d2d1dfaf623ce4e24cd8590565902f8c557c (diff) |
Notes
Diffstat (limited to 'source/Target/LanguageRuntime.cpp')
-rw-r--r-- | source/Target/LanguageRuntime.cpp | 40 |
1 files changed, 22 insertions, 18 deletions
diff --git a/source/Target/LanguageRuntime.cpp b/source/Target/LanguageRuntime.cpp index b1e2b3eb04fc..f61af071e3e4 100644 --- a/source/Target/LanguageRuntime.cpp +++ b/source/Target/LanguageRuntime.cpp @@ -29,10 +29,10 @@ public: ExceptionSearchFilter (const lldb::TargetSP &target_sp, lldb::LanguageType language, bool update_module_list = true) : - SearchFilter (target_sp), - m_language (language), - m_language_runtime (NULL), - m_filter_sp () + SearchFilter(target_sp), + m_language(language), + m_language_runtime(nullptr), + m_filter_sp() { if (update_module_list) UpdateModuleListIfNeeded (); @@ -92,7 +92,7 @@ protected: if (process_sp) { bool refreash_filter = !m_filter_sp; - if (m_language_runtime == NULL) + if (m_language_runtime == nullptr) { m_language_runtime = process_sp->GetLanguageRuntime(m_language); refreash_filter = true; @@ -115,7 +115,7 @@ protected: else { m_filter_sp.reset(); - m_language_runtime = NULL; + m_language_runtime = nullptr; } } }; @@ -128,11 +128,11 @@ public: ExceptionBreakpointResolver (lldb::LanguageType language, bool catch_bp, bool throw_bp) : - BreakpointResolver (NULL, BreakpointResolver::ExceptionResolver), - m_language (language), - m_language_runtime (NULL), - m_catch_bp (catch_bp), - m_throw_bp (throw_bp) + BreakpointResolver(nullptr, BreakpointResolver::ExceptionResolver), + m_language(language), + m_language_runtime(nullptr), + m_catch_bp(catch_bp), + m_throw_bp(throw_bp) { } @@ -207,7 +207,7 @@ protected: if (process_sp) { bool refreash_resolver = !m_actual_resolver_sp; - if (m_language_runtime == NULL) + if (m_language_runtime == nullptr) { m_language_runtime = process_sp->GetLanguageRuntime(m_language); refreash_resolver = true; @@ -230,16 +230,17 @@ protected: else { m_actual_resolver_sp.reset(); - m_language_runtime = NULL; + m_language_runtime = nullptr; } } else { m_actual_resolver_sp.reset(); - m_language_runtime = NULL; + m_language_runtime = nullptr; } return (bool)m_actual_resolver_sp; } + lldb::BreakpointResolverSP m_actual_resolver_sp; lldb::LanguageType m_language; LanguageRuntime *m_language_runtime; @@ -254,16 +255,16 @@ LanguageRuntime::FindPlugin (Process *process, lldb::LanguageType language) LanguageRuntimeCreateInstance create_callback; for (uint32_t idx = 0; - (create_callback = PluginManager::GetLanguageRuntimeCreateCallbackAtIndex(idx)) != NULL; + (create_callback = PluginManager::GetLanguageRuntimeCreateCallbackAtIndex(idx)) != nullptr; ++idx) { language_runtime_ap.reset (create_callback(process, language)); - if (language_runtime_ap.get()) + if (language_runtime_ap) return language_runtime_ap.release(); } - return NULL; + return nullptr; } LanguageRuntime::LanguageRuntime(Process *process) : @@ -336,6 +337,9 @@ LanguageRuntime::InitializeCommands (CommandObject* parent) CommandObjectSP command = command_callback(parent->GetCommandInterpreter()); if (command) { + // the CommandObject vended by a Language plugin cannot be created once and cached because + // we may create multiple debuggers and need one instance of the command each - the implementing function + // is meant to create a new instance of the command each time it is invoked parent->LoadSubCommand(command->GetCommandName(), command); } } @@ -345,5 +349,5 @@ LanguageRuntime::InitializeCommands (CommandObject* parent) lldb::SearchFilterSP LanguageRuntime::CreateExceptionSearchFilter () { - return m_process->GetTarget().GetSearchFilterForModule(NULL); + return m_process->GetTarget().GetSearchFilterForModule(nullptr); } |