Index: src/base/cpu.cc |
diff --git a/src/base/cpu.cc b/src/base/cpu.cc |
index 12a38819197a90aa4d91dfbbef86aa64cb1f3455..16eb7c9a85a6645dd2b5e2e7b67923ebd9bcf75e 100644 |
--- a/src/base/cpu.cc |
+++ b/src/base/cpu.cc |
@@ -338,7 +338,8 @@ CPU::CPU() |
has_vfp_(false), |
has_vfp3_(false), |
has_vfp3_d32_(false), |
- is_fp64_mode_(false) { |
+ is_fp64_mode_(false), |
+ has_non_stop_time_stamp_counter_(false) { |
memcpy(vendor_, "Unknown", 8); |
#if V8_OS_NACL |
// Portable host shouldn't do feature detection. |
@@ -419,6 +420,13 @@ CPU::CPU() |
has_sahf_ = (cpu_info[2] & 0x00000001) != 0; |
} |
+ // Check if CPU has non stoppable time stamp counter. |
+ const int parameter_containing_non_stop_time_stamp_counter = 0x80000007; |
+ if (num_ext_ids >= parameter_containing_non_stop_time_stamp_counter) { |
+ __cpuid(cpu_info, parameter_containing_non_stop_time_stamp_counter); |
+ has_non_stop_time_stamp_counter_ = (cpu_info[3] & (1 << 8)) != 0; |
+ } |
+ |
#elif V8_HOST_ARCH_ARM |
#if V8_OS_LINUX |