X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=common%2Ftrace_writer_local.cpp;h=feb5c912dfd06b2a61f2a003f9f9759bc23255e0;hb=5b9a463db890e86b95c7ac37484704759eabc641;hp=5aeedac520febb823ad08e86aa10bd30a05a24ca;hpb=f74ad0d7b108d0b628e2290a4b6c597e9a13ee8e;p=apitrace diff --git a/common/trace_writer_local.cpp b/common/trace_writer_local.cpp index 5aeedac..feb5c91 100644 --- a/common/trace_writer_local.cpp +++ b/common/trace_writer_local.cpp @@ -128,8 +128,8 @@ LocalWriter::open(void) { #endif } -static unsigned next_thread_id = 0; -static os::thread_specific_ptr thread_id_specific_ptr; +static unsigned next_thread_num = 1; +static thread_specific unsigned thread_num = 0; unsigned LocalWriter::beginEnter(const FunctionSig *sig) { mutex.lock(); @@ -139,17 +139,13 @@ unsigned LocalWriter::beginEnter(const FunctionSig *sig) { open(); } - unsigned *thread_id_ptr = thread_id_specific_ptr.get(); - unsigned thread_id; - if (thread_id_ptr) { - thread_id = *thread_id_ptr; - } else { - thread_id = next_thread_id++; - thread_id_ptr = new unsigned; - *thread_id_ptr = thread_id; - thread_id_specific_ptr.reset(thread_id_ptr); + unsigned this_thread_num = thread_num; + if (!this_thread_num) { + this_thread_num = thread_num = next_thread_num++; } + assert(thread_num > 0); + unsigned thread_id = thread_num - 1; return Writer::beginEnter(sig, thread_id); }