[Lldb-commits] [PATCH] D17710: Simplify GetGlobalProperties functions of Thread/Process/Target

Zachary Turner via lldb-commits lldb-commits at lists.llvm.org
Mon Feb 29 07:39:04 PST 2016


The reason for this is that msvc didn't support this until 2015. I'm fine
with these changes but i think you guys still need 2013 for a while longer,
right?
On Mon, Feb 29, 2016 at 3:38 AM Pavel Labath <labath at google.com> wrote:

> labath created this revision.
> labath added reviewers: clayborg, zturner.
> labath added a subscriber: lldb-commits.
>
> "Initialization of function-local statics is guaranteed to occur only once
> even when called from
> multiple threads, and may be more efficient than the equivalent code using
> std::call_once."
> <http://en.cppreference.com/w/cpp/thread/call_once>
>
> I'd add that it's also more readable.
>
> http://reviews.llvm.org/D17710
>
> Files:
>   source/Target/Process.cpp
>   source/Target/Target.cpp
>   source/Target/Thread.cpp
>
> Index: source/Target/Thread.cpp
> ===================================================================
> --- source/Target/Thread.cpp
> +++ source/Target/Thread.cpp
> @@ -61,11 +61,7 @@
>  {
>      // NOTE: intentional leak so we don't crash if global destructor
> chain gets
>      // called as other threads still use the result of this function
> -    static ThreadPropertiesSP *g_settings_sp_ptr = nullptr;
> -    static std::once_flag g_once_flag;
> -    std::call_once(g_once_flag,  []() {
> -        g_settings_sp_ptr = new ThreadPropertiesSP(new ThreadProperties
> (true));
> -    });
> +    static ThreadPropertiesSP *g_settings_sp_ptr = new
> ThreadPropertiesSP(new ThreadProperties (true));
>      return *g_settings_sp_ptr;
>  }
>
> Index: source/Target/Target.cpp
> ===================================================================
> --- source/Target/Target.cpp
> +++ source/Target/Target.cpp
> @@ -2780,11 +2780,7 @@
>  {
>      // NOTE: intentional leak so we don't crash if global destructor
> chain gets
>      // called as other threads still use the result of this function
> -    static TargetPropertiesSP *g_settings_sp_ptr = nullptr;
> -    static std::once_flag g_once_flag;
> -    std::call_once(g_once_flag,  []() {
> -        g_settings_sp_ptr = new TargetPropertiesSP(new
> TargetProperties(nullptr));
> -    });
> +    static TargetPropertiesSP *g_settings_sp_ptr = new
> TargetPropertiesSP(new TargetProperties(nullptr));
>      return *g_settings_sp_ptr;
>  }
>
> Index: source/Target/Process.cpp
> ===================================================================
> --- source/Target/Process.cpp
> +++ source/Target/Process.cpp
> @@ -835,11 +835,7 @@
>  {
>      // NOTE: intentional leak so we don't crash if global destructor
> chain gets
>      // called as other threads still use the result of this function
> -    static ProcessPropertiesSP *g_settings_sp_ptr = nullptr;
> -    static std::once_flag g_once_flag;
> -    std::call_once(g_once_flag,  []() {
> -        g_settings_sp_ptr = new ProcessPropertiesSP(new ProcessProperties
> (NULL));
> -    });
> +    static ProcessPropertiesSP *g_settings_sp_ptr = new
> ProcessPropertiesSP(new ProcessProperties (NULL));
>      return *g_settings_sp_ptr;
>  }
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20160229/e04df0fd/attachment.html>


More information about the lldb-commits mailing list