Author: tberghammer
Date: Tue Nov  3 16:29:20 2015
New Revision: 251993

URL: http://llvm.org/viewvc/llvm-project?rev=251993&view=rev
Log:
Use std::list::splice in TaskPool to avoid an allocation

Using std::list::splice to move an element from one list to an other
avoids the allocation of a new element and a move of the data.

Modified:
    lldb/trunk/include/lldb/Utility/TaskPool.h

Modified: lldb/trunk/include/lldb/Utility/TaskPool.h
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Utility/TaskPool.h?rev=251993&r1=251992&r2=251993&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Utility/TaskPool.h (original)
+++ lldb/trunk/include/lldb/Utility/TaskPool.h Tue Nov  3 16:29:20 2015
@@ -153,8 +153,7 @@ TaskRunner<T>::AddTask(F&& f, Args&&...
             T&& r = f(std::forward<Args>(args)...);
 
             std::unique_lock<std::mutex> lock(this->m_mutex);
-            this->m_ready.emplace_back(std::move(*it));
-            this->m_pending.erase(it);
+            this->m_ready.splice(this->m_ready.end(), this->m_pending, it);
             lock.unlock();
 
             this->m_cv.notify_one();


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

Reply via email to