[Lldb-commits] [PATCH] D63240: [Core] Generalize ValueObject::IsRuntimeSupportValue

Alex Langford via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Wed Jun 26 14:33:41 PDT 2019


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


================
Comment at: source/Core/ValueObject.cpp:1706-1708
+  for (auto *runtime : process->GetLanguageRuntimes()) {
+    if (runtime->IsWhitelistedRuntimeValue(GetName()))
+      return false;
----------------
aprantl wrote:
> clayborg wrote:
> > aprantl wrote:
> > > jingham wrote:
> > > > clayborg wrote:
> > > > > davide wrote:
> > > > > > clayborg wrote:
> > > > > > > Still seems weird that any language can white list a variable by name. Say swift has a variable named "this" which is truly should be hidden and is marked as artificial, we will always show it...
> > > > > > Swift has no `this`, it has `self`. And yes, there are many places in the debugger where `self` is mentioned explicitly by name and has special handling. Also, I think we want to show it, most of the times.
> > > > > Exactly Davide. **Any** language can whitelist **any** variable they want for **any** other language regardless of the language of origin of the current ValueObject.
> > > > I agree with Greg.  Otherwise various languages are going to fight about their respective white lists.  We should really get the ValueObject's runtime language with  ValueObject::GetObjectRuntimeLanguage() and then asking that runtime.
> > > That's true, but in practice not likely a big problem, since you'd, e.g., need to have an *artificial* variable called `self` in C++ for this to surface.
> > What variables are we actually trying to not show here? Seems like we mostly want to see the variables, even artificial ones. Does anyone know what the variables that we don't want to see are? And how big of a problem are they?
> The ones Jim mentioned earlier: Clang injects helper variables for VLA size, Swift injects various kinds of type metadata. We definitely do want to hide them.
> We should really get the ValueObject's runtime language with ValueObject::GetObjectRuntimeLanguage() and then asking that runtime.

This isn't going to work though. If you want to know whether you should hide something like `_cmd`, then `GetObjectRuntimeLanguage` is going to give you `eLanguagetypeC`, which has no runtime. If it's marked as artificial, then you'll not see it even though ObjCRuntime whitelists it.


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

https://reviews.llvm.org/D63240





More information about the lldb-commits mailing list