[JSC][MIPS] SamplingProfiler::timerLoop() sleeps for 4000+ seconds
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 1 Jun 2017 17:42:23 +0000 (17:42 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 1 Jun 2017 17:42:23 +0000 (17:42 +0000)
https://bugs.webkit.org/show_bug.cgi?id=172800

Patch by Guillaume Emont <guijemont@igalia.com> on 2017-06-01
Reviewed by Saam Barati.

This fixes a static_cast<uint64_t> by making it a cast to int64_t
instead, which looks like the original intent. This fixes the
sampling-profiler tests in JSTests/stress.

* runtime/SamplingProfiler.cpp:
(JSC::SamplingProfiler::timerLoop):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@217663 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/runtime/SamplingProfiler.cpp

index b057d07..b1056b4 100644 (file)
@@ -1,3 +1,17 @@
+2017-06-01  Guillaume Emont  <guijemont@igalia.com>
+
+        [JSC][MIPS] SamplingProfiler::timerLoop() sleeps for 4000+ seconds
+        https://bugs.webkit.org/show_bug.cgi?id=172800
+
+        Reviewed by Saam Barati.
+
+        This fixes a static_cast<uint64_t> by making it a cast to int64_t
+        instead, which looks like the original intent. This fixes the
+        sampling-profiler tests in JSTests/stress.
+
+        * runtime/SamplingProfiler.cpp:
+        (JSC::SamplingProfiler::timerLoop):
+
 2017-06-01  Tomas Popela  <tpopela@redhat.com>, Mark Lam  <mark.lam@apple.com>
 
         RELEASE_ASSERT_NOT_REACHED() in InferredType::kindForFlags() on Big-Endians
index 7cd873e..46fbcda 100644 (file)
@@ -325,7 +325,7 @@ void SamplingProfiler::timerLoop()
         // with some system process such as a scheduled context switch.
         // http://plv.colorado.edu/papers/mytkowicz-pldi10.pdf
         double randomSignedNumber = (m_weakRandom.get() * 2.0) - 1.0; // A random number between [-1, 1).
-        std::chrono::microseconds randomFluctuation = std::chrono::microseconds(static_cast<uint64_t>(randomSignedNumber * static_cast<double>(m_timingInterval.count()) * 0.20l));
+        std::chrono::microseconds randomFluctuation = std::chrono::microseconds(static_cast<int64_t>(randomSignedNumber * static_cast<double>(m_timingInterval.count()) * 0.20l));
         std::this_thread::sleep_for(m_timingInterval - std::min(m_timingInterval, stackTraceProcessingTime) + randomFluctuation);
     }
 }