Revision: 16386
Author:   [email protected]
Date:     Wed Aug 28 09:53:13 2013 UTC
Log: Fix accidential inclusion of <intrin.h> into namespace v8::internal.

Also cleanup the fallback __cpuid() implementation, and add
a comment about preserving the GOT pointer in case of PIC.

[email protected]

Review URL: https://codereview.chromium.org/23464014
http://code.google.com/p/v8/source/detail?r=16386

Modified:
 /branches/bleeding_edge/src/cpu.cc

=======================================
--- /branches/bleeding_edge/src/cpu.cc  Wed Aug 28 07:08:32 2013 UTC
+++ /branches/bleeding_edge/src/cpu.cc  Wed Aug 28 09:53:13 2013 UTC
@@ -27,6 +27,10 @@

 #include "cpu.h"

+#if V8_CC_MSVC
+#include <intrin.h>  // __cpuid()
+#endif
+
 #include <algorithm>
 #include <cctype>
 #include <cstdio>
@@ -40,33 +44,30 @@

 #if V8_HOST_ARCH_IA32 || V8_HOST_ARCH_X64

-#if V8_CC_MSVC
-
-#include <intrin.h>  // NOLINT
-
-#elif defined(__i386__) && defined(__pic__)
+// Define __cpuid() for non-MSVC compilers.
+#if !V8_CC_MSVC

 static V8_INLINE(void __cpuid(int cpu_info[4], int info_type)) {
+#if defined(__i386__) && defined(__pic__)
+  // Make sure to preserve ebx, which contains the pointer
+  // to the GOT in case we're generating PIC.
   __asm__ volatile (
-    "mov %%ebx, %%edi\n"
-    "cpuid\n"
-    "xchg %%edi, %%ebx\n"
+    "mov %%ebx, %%edi\n\t"
+    "cpuid\n\t"
+    "xchg %%edi, %%ebx\n\t"
     : "=a"(cpu_info[0]), "=D"(cpu_info[1]), "=c"(cpu_info[2]), 
"=d"(cpu_info[3])
     : "a"(info_type)
   );
-}
-
-#else  // !V8_CC_MSVC || (!defined(__i386__) && !defined(__pic__))
-
-static V8_INLINE(void __cpuid(int cpu_info[4], int info_type)) {
+#else
   __asm__ volatile (
     "cpuid \n\t"
     : "=a"(cpu_info[0]), "=b"(cpu_info[1]), "=c"(cpu_info[2]), 
"=d"(cpu_info[3])
     : "a"(info_type)
   );
+#endif  // defined(__i386__) && defined(__pic__)
 }

-#endif
+#endif  // !V8_CC_MSVC

 #elif V8_HOST_ARCH_ARM || V8_HOST_ARCH_MIPS

--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to