From cd44dc59cdfc39534aef4d417e9f3c412e3be139 Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Fri, 3 Feb 2012 09:55:33 +0100 Subject: Imported WebKit commit fce473cb4d55aa9fe9d0b0322a2fffecb731b961 (http://svn.webkit.org/repository/webkit/trunk@106560) --- Source/JavaScriptCore/wtf/ParallelJobsGeneric.cpp | 48 +++-------------------- 1 file changed, 5 insertions(+), 43 deletions(-) (limited to 'Source/JavaScriptCore/wtf/ParallelJobsGeneric.cpp') diff --git a/Source/JavaScriptCore/wtf/ParallelJobsGeneric.cpp b/Source/JavaScriptCore/wtf/ParallelJobsGeneric.cpp index b6207dc88..fd5b1f847 100644 --- a/Source/JavaScriptCore/wtf/ParallelJobsGeneric.cpp +++ b/Source/JavaScriptCore/wtf/ParallelJobsGeneric.cpp @@ -30,34 +30,22 @@ #if ENABLE(THREADING_GENERIC) #include "ParallelJobs.h" -#include "UnusedParam.h" - -#if OS(DARWIN) || OS(OPENBSD) || OS(NETBSD) -#include -#include -#elif OS(LINUX) || OS(AIX) || OS(SOLARIS) -#include -#elif OS(WINDOWS) -#include -#endif +#include namespace WTF { Vector< RefPtr >* ParallelEnvironment::s_threadPool = 0; -int ParallelEnvironment::s_maxNumberOfParallelThreads = -1; - ParallelEnvironment::ParallelEnvironment(ThreadFunction threadFunction, size_t sizeOfParameter, int requestedJobNumber) : m_threadFunction(threadFunction), m_sizeOfParameter(sizeOfParameter) { ASSERT_ARG(requestedJobNumber, requestedJobNumber >= 1); - if (s_maxNumberOfParallelThreads == -1) - determineMaxNumberOfParallelThreads(); + int maxNumberOfCores = numberOfProcessorCores(); - if (!requestedJobNumber || requestedJobNumber > s_maxNumberOfParallelThreads) - requestedJobNumber = static_cast(s_maxNumberOfParallelThreads); + if (!requestedJobNumber || requestedJobNumber > maxNumberOfCores) + requestedJobNumber = static_cast(maxNumberOfCores); if (!s_threadPool) s_threadPool = new Vector< RefPtr >(); @@ -65,7 +53,7 @@ ParallelEnvironment::ParallelEnvironment(ThreadFunction threadFunction, size_t s // The main thread should be also a worker. int maxNumberOfNewThreads = requestedJobNumber - 1; - for (int i = 0; i < s_maxNumberOfParallelThreads && m_threads.size() < static_cast(maxNumberOfNewThreads); ++i) { + for (int i = 0; i < maxNumberOfCores && m_threads.size() < static_cast(maxNumberOfNewThreads); ++i) { if (s_threadPool->size() < static_cast(i) + 1U) s_threadPool->append(ThreadPrivate::create()); @@ -93,32 +81,6 @@ void ParallelEnvironment::execute(void* parameters) m_threads[i]->waitForFinish(); } -void ParallelEnvironment::determineMaxNumberOfParallelThreads() -{ - const int defaultIfUnavailable = 2; -#if OS(DARWIN) || OS(OPENBSD) || OS(NETBSD) - unsigned result; - size_t length = sizeof(result); - int name[] = { - CTL_HW, - HW_NCPU - }; - int sysctlResult = sysctl(name, sizeof(name) / sizeof(int), &result, &length, 0, 0); - s_maxNumberOfParallelThreads = sysctlResult < 0 ? defaultIfUnavailable : result; -#elif OS(LINUX) || OS(AIX) || OS(SOLARIS) - long sysconfResult = sysconf(_SC_NPROCESSORS_ONLN); - s_maxNumberOfParallelThreads = sysconfResult < 0 ? defaultIfUnavailable : static_cast(sysconfResult); -#elif OS(WINDOWS) - UNUSED_PARAM(defaultIfUnavailable); - - SYSTEM_INFO sysInfo; - GetSystemInfo(&sysInfo); - s_maxNumberOfParallelThreads = sysInfo.dwNumberOfProcessors; -#else - s_maxNumberOfParallelThreads = defaultIfUnavailable; -#endif -} - bool ParallelEnvironment::ThreadPrivate::tryLockFor(ParallelEnvironment* parent) { bool locked = m_mutex.tryLock(); -- cgit v1.2.1