xiaobai marked an inline comment as done.
xiaobai added a comment.

In D62755#1525790 <https://reviews.llvm.org/D62755#1525790>, @jingham wrote:

> This seems like carrying purity a little too far.


I disagree that it is "carrying purity a little too far". My goal is to see 
LLDB's non-plugin libraries be more language agnostic.
I have two motivations for this:

1. Better language support in LLDB, making it easier to add support for new 
languages in a clean fashion.
2. Shrinking the size of lldb-server. Though the lldb on llvm.org doesn't 
suffer from this problem too much, swift-lldb has an issue where the 
lldb-server you build is incredibly bloated. On Linux I am measuring about 
162MB and on android I measured 61MB. It is incredibly difficult to shrink the 
size without first decoupling components. Because swift-lldb is a downstream 
project, I want to make sure that the abstractions there make sense with what 
is on llvm.org, so I am doing this work here first.

> You haven't removed the fact that the using code is explicitly dialing up the 
> C++ language runtime, you've just made the call-site a little harder to read.

Right, that was not an explicit goal. There are legitimate instances where you 
need to get the C++ language runtime, I'm not saying that this is a bad thing. 
I'm saying that if you need a CPPLanguageRuntime from your process, you should 
use `GetLanguageRuntime()` with LanguageType being eLanguageTypeC_plus_plus. If 
you need to call a method from CPPLanguageRuntime (or one its derived classes) 
that isn't a part of the LanguageRuntime interface, then you should explicitly 
cast it. I also think that this should happen in Plugins that need details 
about the C++ language runtime explicitly and not in non-plugin libraries.

> I don't see any problem with having explicit accessors for the commonly used 
> language runtimes.

Language runtimes are supposed to be plugins. I don't think Process needs to 
have knowledge about specific language runtime plugins. This particular 
instance is relatively harmless, but it is a necessary part of a larger change 
to decouple specific language details from the core lldb implementation.
I recognize that CPPLanguageRuntime currently also lives in Target, but I would 
like to see it moved to "source/Plugins/LanguageRuntime/CPlusPlus/". I think 
that before I try to move it, this change makes sense as a first step.

In D62755#1525810 <https://reviews.llvm.org/D62755#1525810>, @aprantl wrote:

> I tend to agree with Jim's comment.
>
> > There is "GetLanguageRuntime()" which should be used instead.
>
> Can you explain why that is?


I think my response to Jim above explains my reasoning here. If there's 
something I haven't addressed or you have other concerns, please let me know.



================
Comment at: source/Target/Process.cpp:1601
 
-CPPLanguageRuntime *Process::GetCPPLanguageRuntime(bool retry_if_null) {
-  std::lock_guard<std::recursive_mutex> guard(m_language_runtimes_mutex);
----------------
aprantl wrote:
> so what about this mutex at the new call sites?
GetLanguageRuntime locks the mutex as well.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D62755/new/

https://reviews.llvm.org/D62755



_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to