Просмотр исходного кода

native_clock: Internal linkage for FencedRDTSC

__forceinline required on MSVC for function to be inlined
Merry 4 лет назад
Родитель
Сommit
4052bfb4ad
1 измененных файлов с 4 добавлено и 2 удалено
  1. 4 2
      src/common/x64/native_clock.cpp

+ 4 - 2
src/common/x64/native_clock.cpp

@@ -16,15 +16,17 @@
 
 namespace Common {
 
-inline u64 FencedRDTSC() {
 #ifdef _MSC_VER
+__forceinline static u64 FencedRDTSC() {
     _mm_lfence();
     _ReadWriteBarrier();
     const u64 result = __rdtsc();
     _mm_lfence();
     _ReadWriteBarrier();
     return result;
+}
 #else
+static u64 FencedRDTSC() {
     u64 result;
     asm volatile("lfence\n\t"
                  "rdtsc\n\t"
@@ -35,8 +37,8 @@ inline u64 FencedRDTSC() {
                  :
                  : "rdx", "memory", "cc");
     return result;
-#endif
 }
+#endif
 
 u64 EstimateRDTSCFrequency() {
     // Discard the first result measuring the rdtsc.