Revision: 12651 Author: [email protected] Date: Tue Oct 2 03:59:44 2012 Log: Adding a high-resolution timer to platform win32.
BUG=None Review URL: https://codereview.chromium.org/10867057 Patch from Sergey Rogulenko <[email protected]>. http://code.google.com/p/v8/source/detail?r=12651 Modified: /branches/bleeding_edge/src/platform-win32.cc ======================================= --- /branches/bleeding_edge/src/platform-win32.cc Tue Oct 2 03:51:00 2012 +++ /branches/bleeding_edge/src/platform-win32.cc Tue Oct 2 03:59:44 2012 @@ -591,8 +591,16 @@ return t.ToJSTime(); } -// Returns the tickcounter based on timeGetTime. + +static LARGE_INTEGER frequency = 0; + + +// Returns the tickcounter based on QueryPerformanceCounter or timeGetTime. int64_t OS::Ticks() { + static LARGE_INTEGER tick; + if (frequency != 0 && QueryPerformanceCounter(&tick)) { + return static_cast<int64_t>(tick.QuadPart * 1e6 / frequency->QuadPart); + } return timeGetTime() * 1000; // Convert to microseconds. } @@ -2087,12 +2095,15 @@ // call this setup code within the same millisecond. uint64_t seed = static_cast<uint64_t>(TimeCurrentMillis()); srand(static_cast<unsigned int>(seed)); + // Get the number of ticks per second that is used in OS::Ticks() + QueryPerformanceFrequency(&frequency); limit_mutex = CreateMutex(); SamplerThread::SetUp(); } void OS::TearDown() { + frequency = 0; SamplerThread::TearDown(); delete limit_mutex; } -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev
