> On Jul 21, 2017, at 4:55 PM, Sean Callanan <scalla...@apple.com> wrote: > > I was evaluating whether to provide one in a target setting, and I decided > not to. > > Then I was looking to see why anyone wouild, and I couldn't find anyone > actually using it. > > It's a little painful to see it passed around everywhere rather than stored > by Process or Target, the two things that care... but it's not getting in the > way of my work.
Not sure what you mean by that. "settings set target.process.whatever something" has to convey to the process property setter it calls down to what the current process is - if any. That's not something you can store in the process. The process property setter could check the "selected process" but that would be racy, and not a good idea. Maybe I'm missing something, however. Jim > > Sean > On 7/21/17 4:51 PM, Jim Ingham wrote: >> Was this just curiosity, or was this getting in your way somehow? >> >> Jim >> >> >>> On Jul 21, 2017, at 4:50 PM, Jim Ingham via lldb-dev >>> <lldb-dev@lists.llvm.org> >>> wrote: >>> >>> >>> >>>> On Jul 21, 2017, at 4:41 PM, Sean Callanan via lldb-dev >>>> <lldb-dev@lists.llvm.org> >>>> wrote: >>>> >>>> There's a function in OptionValueProperties ( >>>> http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Interpreter/OptionValueProperties.cpp?view=markup >>>> line 234): >>>> >>>> const Property *OptionValueProperties::GetPropertyAtIndex( >>>> const ExecutionContext *exe_ctx, bool will_modify, uint32_t idx) const { >>>> return ProtectedGetPropertyAtIndex(idx); >>>> } >>>> >>>> Its callers go to some trouble to collect and pass around the >>>> ExecutionContext (e.g., GetSubValue passes it around everywhere, >>>> GetPropertyAtrIndexAs* has to keep it everywhere, the Dump mechanism >>>> passes around ExecutionContexts, etc.) >>>> >>>> Aside from calling this function with completely ignores the >>>> ExecutionContext, I don't see the execution contexts getting used >>>> anywhere. Is this a remnant from old code? >>>> >>> For instance (from Process.cpp): >>> >>> class ProcessOptionValueProperties : public OptionValueProperties { >>> public: >>> ProcessOptionValueProperties(const ConstString &name) >>> : OptionValueProperties(name) {} >>> >>> // This constructor is used when creating ProcessOptionValueProperties >>> when it >>> // is part of a new lldb_private::Process instance. It will copy all >>> current >>> // global property values as needed >>> ProcessOptionValueProperties(ProcessProperties *global_properties) >>> : OptionValueProperties(*global_properties->GetValueProperties()) {} >>> >>> const Property *GetPropertyAtIndex(const ExecutionContext *exe_ctx, >>> bool will_modify, >>> uint32_t idx) const override { >>> // When getting the value for a key from the process options, we will >>> always >>> // try and grab the setting from the current process if there is one. >>> Else >>> // we just >>> // use the one from this instance. >>> if (exe_ctx) { >>> Process *process = exe_ctx->GetProcessPtr(); >>> if (process) { >>> ProcessOptionValueProperties *instance_properties = >>> static_cast<ProcessOptionValueProperties *>( >>> process->GetValueProperties().get()); >>> if (this != instance_properties) >>> return instance_properties->ProtectedGetPropertyAtIndex(idx); >>> } >>> } >>> return ProtectedGetPropertyAtIndex(idx); >>> } >>> }; >>> >>> That's what tells you whether to use the global process property, or this >>> process specific one. Ditto for Thread properties. >>> >>> Jim >>> >>> >>> >>>> Sean >>>> _______________________________________________ >>>> lldb-dev mailing list >>>> >>>> lldb-dev@lists.llvm.org >>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev >>> _______________________________________________ >>> lldb-dev mailing list >>> >>> lldb-dev@lists.llvm.org >>> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev > _______________________________________________ lldb-dev mailing list lldb-dev@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev