Adding a high-resolution timer to platform win32.
BUG=None Review URL: https://codereview.chromium.org/10867057 Patch from Sergey Rogulenko <rogulenko@google.com>. git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12651 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
ecc7f4baad
commit
bdc466422b
@ -591,8 +591,16 @@ double OS::TimeCurrentMillis() {
|
||||
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 @@ void OS::SetUp() {
|
||||
// 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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user